Мне удалось сохранить одну запись в общих настройках и отобразить ее в виде списка на другом представлении, но я хочу добавить несколько записей и их отобразить в списке тоже , Я думал, что у меня есть правильный код, но он не видит, что что-то изменило. Мое намерение - список избранных, я беру данные ввода из одного представления и отображаю его в другом представлении.Как сохранить набор строк в общих предпочтениях
SingleView активность:
SharedPreferences.Editor fd;
SharedPreferences FeedPref;
private ArrayList<String> addArray = new ArrayList<>();
txt = (TextView) findViewById(R.id.name);
add = (Button) findViewById(R.id.btnAdd);
FeedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
fd = FeedPref.edit();
add.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String message = txt.getText().toString();
if (addArray.contains(message)) {
Toast.makeText((getBaseContext()), "Plant Already Added", Toast.LENGTH_LONG).show();
} else {
addArray.add(message);
FeedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
fd = FeedPref.edit();
fd.putInt("array_size", addArray.size());
for (int i = 0; i < addArray.size(); i++) {
fd.putString("Status_" + i, addArray.get(i));
}
fd.commit();
Toast.makeText((getBaseContext()), "Plant Added", Toast.LENGTH_LONG).show();
}
}
});
}
mygarden активность:
public class mygardenMain extends Activity {
//String[] presidents;
ListView listView;
//ArrayAdapter<String> adapter;
SharedPreferences FeedPref;
SharedPreferences.Editor fd;
//private ArrayList<String> addArray;
//public static final String PREFS = "examplePrefs";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mygarden_list);
listView = (ListView) findViewById(R.id.mygardenlist);
//addArray = new ArrayList<>();
FeedPref = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
int size = FeedPref.getInt("array_size", 0);
for (int i = 0; i < size; i++) {
String mess = FeedPref.getString("Status_" + i, null);
String[] values = new String[]{mess};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);
}
}
fd.commit(); должен был быть вызван, как только вы положили строку. И это не идеальный способ сделать это. –
Почему бы не сохранить набор вместо этого, я думаю, что он будет более ясным, посмотрите в этом сообщении: http://stackoverflow.com/questions/7057845/save-arraylist-to-sharedpreferences, чем на событии onclick, вы должны получить набор из общего предпочтения, добавьте новый элемент и сохраните его. – fdam
То, что я использовал для кодирования, откуда я добрался до сегодняшнего дня. – user4682589