Android Studio: 点击按钮累加ListView内容,保留数据并恢复 - 代码示例
要实现点击按钮后,ListView的内容累加且不覆盖之前的数据,以及退出程序再次进入时能够看到之前保存的ListView记录,可以通过以下步骤来实现:\n\n1. 创建一个Activity用于显示ListView的界面,命名为ListViewActivity。\n2. 在ListViewActivity的布局文件中添加一个ListView和一个按钮。\n3. 创建一个自定义的Adapter继承自BaseAdapter,用于显示ListView的数据。\n4. 在ListViewActivity中定义一个ArrayList变量,用于保存ListView的数据。\n5. 在ListViewActivity的onCreate方法中,初始化ListView和Button,并设置Button的点击事件监听器。\n6. 在Button的点击事件监听器中,向ArrayList中添加新的数据,并调用Adapter的notifyDataSetChanged方法刷新ListView。\n7. 在ListViewActivity的onSaveInstanceState方法中,保存ArrayList的数据。\n8. 在ListViewActivity的onRestoreInstanceState方法中,恢复ArrayList的数据,并刷新ListView。\n9. 在MainActivity中启动ListViewActivity。\n\n下面是一个示例代码:\n\njava\n// ListViewActivity.java\n\npublic class ListViewActivity extends AppCompatActivity {\n private ListView listView;\n private Button addButton;\n private CustomAdapter adapter;\n private ArrayList<String> dataList;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_listview);\n\n listView = findViewById(R.id.listView);\n addButton = findViewById(R.id.addButton);\n\n dataList = new ArrayList<>();\n adapter = new CustomAdapter(dataList);\n listView.setAdapter(adapter);\n\n addButton.setOnClickListener(new View.OnClickListener() {\n @Override\n public void onClick(View v) {\n // 向ArrayList中添加新的数据\n dataList.add("新的数据" + (dataList.size() + 1));\n // 刷新ListView\n adapter.notifyDataSetChanged();\n }\n });\n }\n\n @Override\n protected void onSaveInstanceState(@NonNull Bundle outState) {\n super.onSaveInstanceState(outState);\n // 保存ArrayList的数据\n outState.putStringArrayList("dataList", dataList);\n }\n\n @Override\n protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {\n super.onRestoreInstanceState(savedInstanceState);\n // 恢复ArrayList的数据\n dataList = savedInstanceState.getStringArrayList("dataList");\n // 刷新ListView\n adapter.notifyDataSetChanged();\n }\n}\n\n\njava\n// CustomAdapter.java\n\npublic class CustomAdapter extends BaseAdapter {\n private ArrayList<String> dataList;\n\n public CustomAdapter(ArrayList<String> dataList) {\n this.dataList = dataList;\n }\n\n @Override\n public int getCount() {\n return dataList.size();\n }\n\n @Override\n public Object getItem(int position) {\n return dataList.get(position);\n }\n\n @Override\n public long getItemId(int position) {\n return position;\n }\n\n @Override\n public View getView(int position, View convertView, ViewGroup parent) {\n if (convertView == null) {\n convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_listview, parent, false);\n }\n\n TextView textView = convertView.findViewById(R.id.textView);\n textView.setText(dataList.get(position));\n\n return convertView;\n }\n}\n\n\n这里假设ListView的item布局文件为item_listview.xml,包含一个TextView用于显示数据。在activity_listview.xml中,需要包含一个ListView和一个Button。
原文地址: https://www.cveoy.top/t/topic/qs7Z 著作权归作者所有。请勿转载和采集!