0

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

已经尝试过notifysetdatachange()invalidateviewsrefreshdrawablestate()没有奏效。

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

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

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

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

我有一个arraylist命名al_6。我用对象填充它。

然后我把它们发给我adapter喜欢的人

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

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

al_6.remove(position)

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

4

3 回答 3

0

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

((YourAdaptor)Listview.getAdaptor()).notifyDataSetChange();
于 2012-12-31T08:29:03.593 回答
0

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

   // query fire on your deletion operation
   mArrayList.remove(position);
   notifyDataSetChanged();
于 2012-12-31T08:35:45.060 回答
0

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

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