我正在使用SQLite表(使用DAO模式)和SimpleAdapter
来显示ListView
,其中每行包含几个String
。
我在ItemClickListener
上设置ListView
以删除点击的行,然后致电notifyDataSetChanged()
:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id){
Long idSelected = (Long) element0.get("ID");
daoMessage.delete(idSelected);
simpleAdapter.notifyDataSetChanged();
}
});
该行实际上已从SQL表中删除。但是,ListView不会更新并仍显示该行。我想我错过了什么,但是什么?
答案 0 :(得分:1)
尽管我能理解你的问题,但我可以看到你正在从数据库中删除一条记录..对吗? 你最终遇到的问题是你从数据库中提供了一个克隆的数据集。所以你必须选择完成它。
1)You also need to remove that record from cloned dataset used for adapter as you are doing seprately for database
2)You need to override notifyDataSetChanged() method and can do step 1 here or can fetch again available data from db using DAO.