I have the following list. Is it possible to save "items" in listview in shared preference and again retrieve it back onCreate ? The reason for doing this is to retrieve back the state of listview which is going blank on Restart of phone. Below is my list item code :
public class LogListView extends ListActivity {
/** Called when the activity is first created. */
private static String newString;
private static EntryAdapter adapter;
int clickCounter = 0;
static ArrayList<Item> items = new ArrayList<Item>();
static SharedPreferences preferences = null;
private static Context context = null;
static StringTokenizer tokens;
private static String first;
private static String second;
private Gson gson;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
adapter = new EntryAdapter(this, items);
// items.add(new SectionItem("Log Report"));
setListAdapter(adapter);
if (adapter.getCount() != 0) {
// Do nothing Adapter has value
} else {
Toast.makeText(LogListView.this, "No Items Available",Toast.LENGTH_SHORT).show();
//Get Saved ListItems
}
}
// Method which will handle dynamic insertion
public static void addItems() {
preferences = context.getSharedPreferences("LOG",android.content.Context.MODE_PRIVATE);
newString = preferences.getString("log", "");
tokens = new StringTokenizer(newString, ",");
first = tokens.nextToken();
second = tokens.nextToken();
items.add(new EntryItem(first, second));
adapter.notifyDataSetChanged();
}
// Method which will handle dynamic insertion ends
// Save ListItems if restarted
protected void saveList(){
String value = gson.toJson(items);
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
Editor e = prefs.edit();
e.putString("list", value);
e.commit();
}
// Save ListItems if restarted ends
// Retreive ListItems if restarted
protected void retriveList(){
SharedPreferences prefs = context.getSharedPreferences("settings", Context.MODE_PRIVATE);
String value = prefs.getString("list", null);
GsonBuilder gsonb = new GsonBuilder();
Gson gson = gsonb.create();
MyObject[] list = gson.fromJson(value, MyObject[].class);
}
// Retreive ListItems if restarted ends
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
if (!items.get(position).isSection()) {
items.get(position);
// Toast.makeText(this, "You clicked " + item.title ,
// Toast.LENGTH_SHORT).show();
Toast.makeText(this, "You clicked " + position, Toast.LENGTH_SHORT)
.show();
}
if (position == 9) {
}
super.onListItemClick(l, v, position, id);
}
}