I'm making an app where the user can enter their score and that will go into a list view. I want the strArr variable to save on exit so the score are still there when the user reopens the app. I've asked a question similar to this before where an int is saved however,I'm having a hard time doing the same with an ArrayList. Here's my code which currently crashes on launch.
public class AltonDuel extends Activity {
private Button bt;
private ListView lv;
private ArrayList<String> strArr;
private ArrayAdapter<String> adapter;
private EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alton_duel);
bt = (Button) findViewById(R.id.button);
lv = (ListView) findViewById(R.id.listView);
et = (EditText) findViewById(R.id.editText);
final Calendar cal = Calendar.getInstance();
final int dd = cal.get(Calendar.DAY_OF_MONTH);
final int mm = cal.get(Calendar.MONTH);
final int yy = cal.get(Calendar.YEAR);
int rideCountFile;
final SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("AltonDuelCount", Context.MODE_PRIVATE);
strArr = (ArrayList<String>) sharedPref.getStringSet("stringArr", new HashSet<String>());
strArr = new ArrayList<String>();
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, strArr);
lv.setAdapter(adapter);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
strArr.add(dd + "-" + mm + "-" + yy + " | " + et.getText().toString());
adapter.notifyDataSetChanged();
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet("stringArr", (Set<String>) strArr);
editor.commit();
}
});
}}
Updated Code:
public class AltonDuel extends Activity {
private Button bt;
private ListView lv;
private ArrayList<String> strArr;
private ArrayAdapter<String> adapter;
private EditText et;
ArrayList<String> data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alton_duel);
bt = (Button) findViewById(R.id.button);
lv = (ListView) findViewById(R.id.listView);
et = (EditText) findViewById(R.id.editText);
final Calendar cal = Calendar.getInstance();
final int dd = cal.get(Calendar.DAY_OF_MONTH);
final int mm = cal.get(Calendar.MONTH);
final int yy = cal.get(Calendar.YEAR);
int rideCountFile;
final SharedPreferences sharedPref = getApplicationContext().getSharedPreferences("AltonDuelCount", Context.MODE_PRIVATE);
data = (ArrayList<String>) sharedPref.getStringSet("stringArr", new HashSet<String>());
Set<String> data = new HashSet<String>(strArr);
strArr = new ArrayList<String>();
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, strArr);
lv.setAdapter(adapter);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
strArr.add(dd + "-" + mm + "-" + yy + " | " + et.getText().toString());
adapter.notifyDataSetChanged();
SharedPreferences.Editor editor = sharedPref.edit();
editor.putStringSet("stringArr", (Set<String>) strArr);
editor.commit();
}
});
}}