【问题标题】:Update or change adapter in Listview在 Listview 中更新或更改适配器
【发布时间】:2013-12-11 12:11:38
【问题描述】:

我对列表视图有疑问,请参阅下面的代码

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) {

    }

}

现在我想在我的数据库更新时更改或更新适配器,并且基于该列表视图将更新所以任何朋友都可以告诉我如何做到这一点

【问题讨论】:

  • 更新填充列表视图的基础数据并调用adapter.notifyDataSetChanged()
  • 会改变我的光标数据??或者从数据库中获取更新的数据??
  • 使用一些基于 CursorAdapter 的类 + ContentProvider,你也不必做任何事情
  • @pskink 你能告诉我如何实现吗??

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


【解决方案1】:

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

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

【讨论】:

  • mAdapter.changeCursor(cursor); ArrayAdapter 不支持此方法
  • 我的错误。使用 ArrayAdapter,您无需全部更改光标。你可以忽略那一点。
  • 这不起作用,请检查我正在使用光标的代码,告诉我如何刷新光标?
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    boolean isDataSetChanged = checkIstheDataVersionChanged(Object CurrentVersion);
    
    if(isDataSetChanged )
    {
     set_adapter();
    }
    

    【讨论】:

    • 即使我清除适配器并调用 set_adapter() 仍未更新,这也不会更新列表视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多