【发布时间】:2010-12-17 15:57:08
【问题描述】:
我有一个扩展 Activity 的 A 类。从 A 类,我正在调用扩展 BaseAdapter 的适配器 B 类。
我正在从被覆盖的方法中显示 ListView 数据 public View getView(final int position, View convertView, ViewGroup parent)
我正在从 SQLite 获取 ListView 的数据。现在单击特定列表项的取消按钮,我可以从数据库中删除记录数据,但无法刷新视图。仍在显示数据。但是如果我再次从主屏幕导航到屏幕,数据没有显示,说明数据库没有问题,只是更新显示有问题。
骨架代码如下:
class A extends Activity {
B adapter ;
ListView list ;
public void onCreate(Bundle savedInstanceState) {
list = (ListView) findViewById(R.id.textList);
// I am calling the adapter
adapter = new B(this, txtStr);
list.setAdapter(adapter);
}
class B extends BaseAdapter{
public View getView(final int position, View convertView, ViewGroup parent){
// on click of the delete button , record is delated for a specific
// listitem & the view needs to be updated , but I am unable to update the view
holder.deleteImage.setOnClickListener(new OnClickListener() {
private int pos = position;
public void onClick(View v) {// (position)) -- what was this doing here? (dbreslau)
sampleDB.execSQL("DELETE FROM " + Constants.TABLE_NAME + " where id = 1");
adapter.notifyDataSetChanged();
}
});
}
}
}
即使在调用 notifyDataSetChanged 之后,视图也没有得到更新。 如果有人已经实现了相同的功能,请提供帮助。
【问题讨论】:
-
我刚刚尝试修复您的代码格式,并发现了一些语法错误(请参阅位置外的注释
(position))。)我不确定代码是否完整足以分析。 -
Listview 显示项目列表。考虑每个包含 2 个图像按钮的列表项,例如 Delete & Add 。当用户单击列表项的特定按钮时,位置有助于确定特定的列表项。我知道 onListItemClick(ListView l, View v, int position, long id),我们从那里得到 position 。如果用户单击任何列表项的添加或删除按钮,我该如何处理。请提供帮助,因为在删除列表项后我仍然无法更新视图。
标签: android