【发布时间】:2015-02-24 09:39:41
【问题描述】:
我和这里的很多机构都遇到过这个问题,但我还没有看到有效的答案。 对于列表中的每个项目,我都有一个列表视图和一个删除按钮。当我单击按钮时,该项目将从数据库中删除并从列表中删除,但列表视图不会刷新项目。
我已经调用了方法notifyDataSetChanged(),但没有结果。(当项目被删除时,下一个项目的标题出现,似乎有两个项目有一个标题,一个接一个地排序)。
myListView.invalidateViews() 和 myListView.invalidate() 也不起作用。
确切的原因是什么,绝对的解决方案是什么?
这是我的代码:
以下是全部代码:
公共类 AdapterNote 扩展 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;
}
}
【问题讨论】:
-
fill()函数是什么?什么时候叫?由谁?以及使用哪些参数? -
如果可能,显示更多 sn-p
-
这里的“item”是什么,“deleteItem”是什么?
-
我写了上面的全部代码。请检查代码。这个问题真是烦死我了!