如何在不更改其他项目的情况下将项目添加到 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
调用该适配器函数以添加新项目。
我是 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
首先,我强烈建议您使用 RecyclerView 而不是 ListView,如果您还没有的话。它绝对是 ListView 的更好版本。
您要查找的函数是notifyItemInserted。
我用 Kotlin 写了一个非常简单的 example (如果你想继续 Android 开发,也建议学习,因为它现在是官方支持的语言。)
相关片段如下。在使用 notifyItemInserted
:
addItem
函数
fun addItem(value: String) {
items.add(value)
notifyItemInserted(items.size)
}
然后在您的按钮中 OnClickListener
调用该适配器函数以添加新项目。