在Android中添加/删除ListView项目时保存用户输入

时间:2015-10-23 12:27:06

标签: android android-listview

我有一个ListView,其中包含多个用户输入复选框。我有两个按钮添加和删除分别添加和删除列表项。 我正在使用BaseAdapter for ListView并使用notifyDataSetChanged()

通知ListView

我随时添加/删除项目。列表中的用户输入被清除。我认为这是因为该列表每次都在重建。在listView中添加/删除项目时如何保持用户输入的任何想法?

2 个答案:

答案 0 :(得分:0)

在listview中,你只有一个选项是使用带适配器的notifyDatasetChanged()。只是不要清除你的整个列表只是添加/删除,然后通知适配器或使用Recycclerview。

使用recyclerview,您可以使用许多选项,例如notifyDataInserted,notifyDataRemoved,插入范围,删除范围等。

你可以找到一个很好的例子here

答案 1 :(得分:0)

我认为你的程序正在再次读取getView()函数。看到下面的代码,以避免它,它是复制粘贴,但它可能会给你一些想法 -

public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
holder = new ViewHolder();
holder.text = (TextView) convertView.findViewById(R.id.text);
holder.icon = (ImageView) convertView.findViewById(R.id.icon);

convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}

holder.text.setText(DATA[position]);
holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

return convertView;
}

您可以参考此链接获取更多信息-0 Android, how to stop reading getView() function again, if the content is already downloaded in the ListView