这个问题遇到了我和很多机构在这里,但我还没有看到有效的答案。 我有列表中的每个项目的列表视图和删除按钮。当我点击按钮时,项目从数据库中删除,也从列表中删除,但列表视图不刷新项目。删除一个项目后刷新listview项目
我已经调用方法notifyDataSetChanged()
但没有结果(当项目被删除后,下一个项目的标题出现,似乎有两个项目有一个标题,依次排序)。 myListView.invalidateViews()
和myListView.invalidate()
也没有工作。
什么是确切的原因和什么是绝对的解决方案?
这里是我的代码:
这里是整个代码:
公共类适配器注扩展ArrayAdapter {
public AdapterNote(ArrayList<StructNote> notes) {
super(G.context, R.layout.adapter_note, notes);
}
private class ViewHolder {
TextView txtTitle;
ImageView imgDelete;
public ViewHolder(View view) {
txtTitle = (TextView) view.findViewById(R.id.txtTitle);
imgDelete = (ImageView) view.findViewById(R.id.imgDelete);
}
public void fill(final ArrayAdapter<StructNote> adapter, final StructNote item, final int position) {
txtTitle.setText(item.title + "");
imgDelete.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
G.notes.remove(item);
adapter.remove(item);
deleteDataFromDatabase(item.id);
G.adapter.notifyDataSetChanged();
}
});
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
StructNote item = getItem(position);
if (convertView == null) {
convertView = G.inflater.inflate(R.layout.adapter_note, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.fill(this, item, position);
return convertView;
}
}
那是什么'填写()'函数?它什么时候被叫?由谁?并使用哪些参数? – greenapps 2015-02-24 09:45:18
如果可能,请显示更多代码片段 – 2015-02-24 10:12:20
什么是“item”,什么是“deleteItem”? – 2015-02-24 10:19:08