简体   繁体   中英

How to Save Value of ListView In Android

I was recently working on a todo list application in android studio where the user will input text through an EditText, and then the String will be added to a listView as shown below.

public class MainActivity extends AppCompatActivity {

private ArrayList<String> items;
private ArrayAdapter<String> itemsAdapter;
private ListView lvItems;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    lvItems = (ListView) findViewById(R.id.lvItems);
    items = new ArrayList<>();
    itemsAdapter = new ArrayAdapter<>(this,
            android.R.layout.simple_list_item_1, items);
    lvItems.setAdapter(itemsAdapter);

    }



private void setupListViewListener() {
    lvItems.setOnItemLongClickListener(
            new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> adapter,
                                               View item, int pos, long id) {
                    // Remove the item within array at position
                    items.remove(pos);
                    // Refresh the adapter
                    itemsAdapter.notifyDataSetChanged();
                    return true;
                }

            });
}




public void addTask(View v) {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
    LayoutInflater inflater = this.getLayoutInflater();
    final View dialogView = inflater.inflate(R.layout.dialog, null);
    dialogBuilder.setView(dialogView);

    final EditText edt = (EditText) dialogView.findViewById(R.id.edit1);

    dialogBuilder.setTitle("Add a New Task");
    dialogBuilder.setMessage("Enter what you want to do");
    dialogBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            String itemText = edt.getText().toString();
            itemsAdapter.add(itemText);
            edt.setText("");
        }
    });
    dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {

        }
    });
    AlertDialog b = dialogBuilder.create();
    b.show();
  }

}

But the problem I have is that when the user closes the activity, the state of the ListView will change back to it's original value.

I want the ListView to retain the Information that has been put inside it when the activity closes.

How do I go about this?

There are many ways to save data in your app.

You can use the following options:

  • SharedPreferences
  • Files
  • SQLite (with plain sql or with the framework Room)

For more information check this link : https://developer.android.com/training/data-storage/index.html

Usually for this situation using Sqlite But you can use others way such as Shared preference or File

Like you can see here: https://developer.android.com/guide/topics/data/data-storage.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM