Элемент в ArrayList заменяется вместо добавления - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь перенести все элементы из ArrayList, сохраненные в EditActivity, в MainActivity с помощью SharedPreferences.Но только последние введенные данные отображаются в ListView на первом MainActivity.Как я могу сделать так, чтобы весь текст, введенный в EditText, отображался как другой элемент в ListView и не заменял предыдущий элемент.Вот мой код:

MainActivity

public class MainActivity extends AppCompatActivity {

private ListView list;
private Button nextButton;

ArrayList<String> arrayList = new ArrayList<String>();
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list = (ListView) findViewById(R.id.list);
    nextButton = (Button) findViewById(R.id.nextButton);

        loadData();

    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
    list.setAdapter(adapter);
    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            nextActivity();
        }
    });
}
public void nextActivity(){
    Intent intent = new Intent(this, EditActivity.class);
    startActivity(intent);
}

public void loadData(){
    SharedPreferences sp = getSharedPreferences("Data", Context.MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sp.getString("list", null);
    Type type = new TypeToken<ArrayList<String>>() {}.getType();
    arrayList = gson.fromJson(json, type);

    if(arrayList == null){
        arrayList = new ArrayList<String>();
    }
}}

EditActivity

public class EditActivity extends AppCompatActivity {

private EditText input;
private Button addButton;

public ArrayList<String> list = new ArrayList<String>();
public ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_edit);

    input = (EditText) findViewById(R.id.input);
    addButton = (Button) findViewById(R.id.addButton);

    adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
    addButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String getInput = input.getText().toString();
            adapter.addAll(getInput);
            saveData();
            input.setText(""); //clear the value in the edit text
        }
    });

}
public void saveData(){
    SharedPreferences sp = getSharedPreferences("Data", Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    Gson gson = new Gson();
    String json = gson.toJson(list);
    editor.putString("list", json);
    editor.apply();
}}

1 Ответ

0 голосов
/ 24 декабря 2018

Я думаю, вы забыли добавить элемент в список перед сохранением, и в результате вы сохраняете только последний элемент.

addButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String getInput = input.getText().toString();
        list.add(getInput); //add this line
        adapter.addAll(getInput);
        saveData();
        input.setText(""); //clear the value in the edit text
    }
});
...