如何在SimpleAdapter中使用notifyDataSetChanged?

时间:2015-03-13 01:14:55

标签: android sqlite listview

我正在使用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不会更新并仍显示该行。我想我错过了什么,但是什么?

1 个答案:

答案 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.