【问题标题】:refresh listview created from an arraylist after delete operation删除操作后刷新从数组列表创建的列表视图
【发布时间】:2012-12-15 11:27:13
【问题描述】:

我看到太多关于刷新列表视图的问题,我已经尝试了有关这些主题的所有解决方案,但没有一个对我有用。

尝试了notifysetdatachange()invalidateviewsrefreshdrawablestate(),但都没有成功。

我有一个arraylist,在一个longclick 操作之后,我正在从arraylist 中删除一个项目。我希望它从listview 中消失。但它没有。

但删除后,如果我打开另一个活动并返回包含我的listview 的活动,它就会消失。

所以我的删除操作成功了,我只想知道如何刷新listview,

我没有发布代码,因为我只是在使用没有什么独特的东西

我有一个名为 al_6arraylist。我正在用对象填充它。

然后我将它们发送到我的adapter 喜欢

adapter = new ContentSearchListAdapter(getActivity(), channels2,
                options);
        listview.setAdapter(adapter);

当我想从我的数组列表中删除一个对象时。

al_6.remove(position)

正如我之前所说的删除操作成功

【问题讨论】:

  • 您必须添加更多代码才能获得答案。从 arraylist 中删除项目的单行代码是不够的。

标签: android listview refresh adapter


【解决方案1】:

你应该使用这些语法来实现它

((YourAdaptor)Listview.getAdaptor()).notifyDataSetChange();

【讨论】:

  • 问卷已经说他使用了 notifyDataSetChanged()
  • 但它并没有具体说明如何使用它,他正在应用 dotifydatasetchange 而没有获得适配器......
  • 我已经按照你说的使用了 ((ContentSearchListAdapter) mylistview.getAdapter()).notifyDataSetChanged();但仍然没有任何变化。
  • 照你说的做了,但还是一无所获
  • 您应该在问题中添加您的代码,以便我们获得更多说明。
【解决方案2】:

试试这个代码并为你的适配器类,

   // query fire on your deletion operation
   mArrayList.remove(position);
   notifyDataSetChanged();

【讨论】:

  • 正如我一开始所说的那样,我已经尝试过了,但它不起作用
  • 抱歉不明白你问了什么?
  • 我说你,哪个adpater类使用了baseAdapter类?
【解决方案3】:

根据我的经验,刷新列表视图的行为很奇怪。我总是这样做以毫无问题地刷新 listView:

  • 使用从 BaseAdapter 扩展而来的自定义适配器
  • 使用 ArrayList 结构数据进入适配器。如果您的数据在数据库 SQLiteDatabase 中,我建议将您需要的数据放入该列表中的 ArrayList 中并将其传递给适配器。我不能对 CursorAdapter 做同样的事情:(
  • 如果您打算在 Activity 之外修改数据并想要更新列表,请将 ArrayList 和 Adapter public static 放在 Activity 中。
  • 当您修改或删除数据中的任何信息时(如果您直接在数据库上执行此操作,请将其复制到 ArrayList 中),请使用您的 Activity 的 Adapter 的公共静态引用来调用他的方法 notifyDataSetChanged ()

【讨论】:

    猜你喜欢
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多