我是 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();
}
});
}
我做了這個更改,但是當單擊添加按鈕時,正在添加一個專案,但以前的更改消失了 ,這是當我單擊添加按鈕時
uj5u.com熱心網友回復:
首先,我強烈建議您使用RecyclerView而不是 ListView,如果您還沒有的話。這是一個絕對更好的 ListView 版本。
您正在尋找的功能是notifyItemInserted。
我用 Kotlin 寫了一個非常簡單的例子(如果你想繼續 Android 開發,也建議學習,因為它現在是官方支持的語言。)
相關片段如下。addItem在您的配接器中創建一個函式,該函式使用notifyItemInserted:
fun addItem(value: String) {
items.add(value)
notifyItemInserted(items.size)
}
然后在您的按鈕中OnClickListener呼叫該配接器函式以添加新專案。
uj5u.com熱心網友回復:
而不是這樣做adapter.insert(mark, marks.size());,您可以使用該adapter.notifyDataSetChanged();功能。從這里洗掉 finalfinal ArrayList<Mark> marks = new ArrayList<Mark>();并將你的插入Mark到這個 ArrayList 中,然后在里面做 adapter.notifyDataSetChanged()OnClickListener
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/447449.html
下一篇:如何更改文本的大小
