更新或更改Listview中的适配器

时间:2013-12-11 12:11:39

标签: android listview android-listview sqlite android-arrayadapter

我对list-view有疑问请看下面的代码

private void set_adapter() {

    Cursor list_scan_curson = scan_result.getScanResult();
    List<String> list_scan = new ArrayList<String>();
    try {

        if (list_scan_curson.moveToFirst()) {
            do {

                String name = list_scan_curson.getString(0);

                // Adding contact to list
                list_scan.add(name);
            } while (list_scan_curson.moveToNext());
        }

        ArrayAdapter<String> list_item_scan = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, list_scan);
        this.list_scan.setAdapter(list_item_scan);

    } catch (Exception e) {

    }

}

现在我想更改或更新适配器,当我的数据库更新并基于该列表视图将更新时,任何好友都可以告诉我如何执行此操作

3 个答案:

答案 0 :(得分:2)

您创建一个新光标,并替换旧光标,如下所示:

Private ArrayAdapter<String> mAdapter; // adapter declared as field
...
mAdapter =  ..., // create adapter
...
mAdapter.notifyDataSetChanged(); // update listview

答案 1 :(得分:1)

如果要使用adapter.notifyDataSetChanged()更新列表中的数据。如果要更新数据库中的数据,则必须触发某些操作,因此请使用onScrollchanged侦听器或使用某些后台线程。

答案 2 :(得分:0)

您可以实现以下[checkIstheDataVersionChanged(Object CurrentVersion)]之类的逻辑来检查哪种类型的更改/更新会影响您的数据集并使用set_adapter重新加载listView。

boolean isDataSetChanged = checkIstheDataVersionChanged(Object CurrentVersion);

if(isDataSetChanged )
{
 set_adapter();
}