如何在不更改其他项目的情况下将项目添加到 listView

how to add an item to a listView whithout changing other Items

我是 android 的初学者,我想在单击按钮时向 ListView 添加一个项目。 但是当我这样做时,ListView 重新启动并且我之前所做的所有更改都消失了。 如何保存 ListView 的先前状态。

这是 MainActivity :

protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   listMarks = (ListView) findViewById(R.id.list_marks);
   btn_add = (Button) findViewById(R.id.btn_add);
   final Mark mark = new Mark("", "", "", "");
   final ArrayList<Mark> marks = new ArrayList<Mark>();
   marks.add(marks.size(), mark);
   adapter = new MarkLitViewAdapter(MainActivity.this, marks);
   listMarks.setAdapter(adapter);
   btn_add.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
         marks.add(mark);
         adapter.notifyDataSetChanged();
      }
   });
}

I made this changes but when click on add button an item is being add but previous changes disappear this is when i click on the add button

您可以使用 adapter.notifyDataSetChanged(); 功能代替 adapter.insert(mark, marks.size());。从这里删除最后一个 final ArrayList<Mark> marks = new ArrayList<Mark>(); 并将你的 Mark 插入到这个 ArrayList 中,然后在 OnClickListener

中执行 adapter.notifyDataSetChanged()

首先,我强烈建议您使用 RecyclerView 而不是 ListView,如果您还没有的话。它绝对是 ListView 的更好版本。

您要查找的函数是notifyItemInserted

我用 Kotlin 写了一个非常简单的 example (如果你想继续 Android 开发,也建议学习,因为它现在是官方支持的语言。)

相关片段如下。在使用 notifyItemInserted:

的适配器中创建一个 addItem 函数
fun addItem(value: String) {
    items.add(value)
    notifyItemInserted(items.size)
}

然后在您的按钮中 OnClickListener 调用该适配器函数以添加新项目。