问题标签 [notifydatasetchanged]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
56 浏览

android - 从不同的片段更新加载器

我有两种类型的课程。类A和类B。类A有一个List<B>作为类变量。

现在我有一个ListFragment A它使用ACursorAdapter并实现LoaderCallBacks<Cursor>并因此加载A实例列表(由在光标中检索到的数据形成)。这本身就可以正常工作。

我也有一个ListFragment Bwhich uses BCursorAdapterand also implementsLoaderCallBacks<Cursor>因此加载一个B实例列表。这本身也可以正常工作(由在游标中检索到的数据形成)。

现在,如果我从中删除选定的项目(通过ContentProvider),ListFragment B以使它们都形成一个特定的实例,那么我也会从数据库中A删除相应的项目。A但是,当我返回时 ListFragment A,游标加载器仍然包含已删除的信息,并在显示刚刚删除的实例时抛出空指针异常。A

ContentProvider调用的所有方法getContext().getContentResolver().notifyChange(uri, null)。但是 ListFragment A 仍然没有更新。

那么我如何通知刷新适配器/光标ListFragment Afrom ListFragment B

任何帮助表示赞赏。

0 投票
0 回答
248 浏览

android - Android:ListFragment 中的 onDataSetChanged() 调用不起作用

我有一个 ListFragment,其中列出了所有可用的蓝牙设备。但是,当我在应用程序中的片段之间切换而不是切换回 ListFragment 时,适配器中的所有数据仍然存在,但 List 没有显示任何内容。这是代码:

当我第一次向 ArrayAdapter 添加项目并调用 notifyDataSetChanged 时,它工作得非常好。但是,当我离开 ListFragment 而不是回来时,它应该显示与以前相同的 List,但它没有显示任何内容。甚至当我像以前一样再次将数据添加到 ArrayAdapter 时也是如此。我从中将数据添加到 onCreateView 函数中的 ArrayAdapter 的 ArrayList 不为空。

谢谢你的建议!

0 投票
2 回答
530 浏览

android - 具有 JSONArray 的自定义基本适配器上的 notifydatasetchanged()

我制作了一个自定义的基本适配器类,在其中传递了活动的上下文和一个 JSONArray。我使用这个 JSONArray 数据来设置所有视图。但是适配器上的 notifyDataSetChanged() 不起作用。我是否必须在适配器中传递字符串数组或字符串数​​组列表才能使 notifyDataSetChanged() 工作?如果我通过 JSONArray,它会不起作用吗?

我的自定义适配器类代码:

0 投票
0 回答
99 浏览

android - 在 android gridview 中的图标集之间切换

我是android开发的新手。在我的 androidactivity中,我有一个GridView和一个Button. 该类GridView adapterGridView. 我想要的是,如果Button单击活动中的 ,GridView则应将 中的图标集替换为另一组图标。并且每次Button点击activity中的两组图标都应该切换GridView。那么,如何使用notifyDatasetChanged()呢?请帮忙。

GridView Adapter班级:

按钮 onclick 监听器:

0 投票
1 回答
1458 浏览

android - 替换图像时动态刷新网格视图。notifyDataSetChanged() 不工作

我有一个GridView从 SD 卡(如果存在)加载图像,否则是一些默认图像。加载图像后,用户可以选择任何图像单元并拍摄新照片。当加载默认图片GridView并且用户拍照时,GridView更新并显示图像 - 但如果用户再次单击单元格并拍摄新照片,则GridView不会更新。只有当我杀死应用程序并重新启动它时,才会出现新图片。

我已经尝试过notifyDataSetChanged(),但是刷新图像时它不起作用。

这是代码:

}

0 投票
1 回答
8771 浏览

android - notifyDataSetChanged() 不刷新可扩展列表视图

我正在使用Expandable ListView,其中的数据是通过Sqlite数据库填充的。我提供了一个删除组的选项ExpandableListView,它实际上删除row了数据库中的相应组。但是活动不会被刷新,并且删除的“案例”是可见的,直到一个人返回并再次来到 this activity 我创建了class一个extends *BaseExpandableListAdapter*。它包含所有overridden方法。以下是代码:

现在还有另一个class RunningCase.javawhich extends Activity。这class用于填充 中的数据ExpandableListViewOnLongClick()(点击并按住)中的任何组ExpandableListViewcontext menu出现 a。context menu包含一个选项删除以从数据库中删除该案例并刷新RunningCase activity.

方法db.getRunning()db.getRunning_child()从数据库中检索数据。此外,以下是从数据库中删除案例的代码,该代码运行良好:

请帮帮我。应该在删除案例时刷新,activity以便不再出现已删除的案例。提前致谢!!

0 投票
1 回答
883 浏览

android - 我的 GridView/ListView 仅在 android api 18+ 中触摸后才会呈现

更新:基于我的 BaseAdapter 的 gridview / listview 在 Android 4.3 中停止工作。如果我在 Android 4.2 或更低版本中运行它,它可以正常工作。

我用“愚蠢的”getView() 尝试了它,它每次都会膨胀一个新视图,它不会改变任何事情。

原始问题:

我有一个列表视图和一个网格视图。它们是我的数据的 2 种不同图形表示。我的问题是两者都有,所以从现在开始我只写adapterview,但它可能意味着两者。

我使用扩展 BaseAdapter 的自定义适配器设置了我的适配器视图。它主要工作,但有时当我更改设置(在 PreferenceActivity 意图中)并更改我的数据集时,调用 notifyDataSetChanged(),屏幕不会刷新。更准确地说,一些项目会被刷新,但其余项目会保留在屏幕上,就像更改前一样。

我阅读了许多教程,观看了 Romain Guy 的视频,似乎我错过了一些非常基本的东西,但无法弄清楚它是什么。

我加了一些调试,奇怪的是,我调用notifyDataSetChanged()后,调用getCount(),可以看到数字变了,甚至调用getView(),就是不刷新item屏幕上。然而,在我触摸屏幕后,一切都被渲染了(尽管 getView() 再次为所有可见视图调用)

这是我的 getView() 函数的开始:

我将 convertView1 转换为 CategoryListItemView 的原因是因为我稍后在 getView() 中使用了它的自定义函数。

我的适配器视图是 GridView 或 ListView,相应的项目是 category_grid_item 或 category_list_item,每当我在 2 个可视化之间进行更改时,我都会使适配器无效(无论如何我的问题不存在)

0 投票
2 回答
1217 浏览

java - 如何使用 .notifyDataSetChanged() 更新 Listfragment 中的 SimpleCursorAdapter?

我想在 ListView(ListFragment) 中插入一个新的视图数据行,我已经在方法中的 setAdapter() 中声明了数组,但是它有 NullPointerException 错误我应该如何adapter.notifyDataSetChanged();在新方法中使用?

我再次尝试在新方法中声明游标,或在类中声明 SimpleCursorAdapter,但它们有一些错误

日志猫:

注意片段:

}

主要活动:

新的错误信息:

0 投票
2 回答
75 浏览

android - notifyDataSetChanged() 最后更新

我有一个Runnable类可以为我的复合列表视图计算模型值,在该可运行文件中,自定义线程中有一个 UI 线程。我有适配器的notifyDataSetChanged()调用,但是在notifyDataSetChanged()我尝试更新主布局中的一些 TextView 值之后。问题是在运行 TextView 时首先更新,然后才是 ListViews 并更新。这意味着notifyDataSetChanged()Adapter定义类最后更新,这不适合我。是否有可能同步这些屏幕更新?

这是示例代码:

0 投票
0 回答
1034 浏览

android - 多个连续的适配器 notifyDataSetChanged 调用不刷新 ListView

这是一个非常严重的错误行为,我不知道为什么这不起作用。

我的适配器(扩展BaseAdapter)结合了两种独立的数据类型。一个是游标,另一个是元素列表。两者的设置器都获取数据和强制notifyDataSetChanged()

这些元素的数据是使用两个独立AsyncTaskLoader的 Loader 框架收集的。更具体地说,这些设置器是从相应的LoaderCallbacks.onLoadFinished方法中调用的。

当用户选择显示不同的数据时,两个 Loader 都会在 my 中触发Fragment

为了可视化 的重绘ListView,我在适配器的getView方法中登录。

在我运行 Android 4.3 的主要开发设备上,一切正常。

1) 用户触发器更改 2) 两个加载器触发 3) 两个加载器独立完成,每次触发notifyDataSetChanged,我看到很多getView日志输出,但重要的是:在第二个加载器完成后,列表再次重绘。

示意图:

  • 触发装载机 1
  • 触发装载机 2
  • 装载机 1 完成
  • notifyDataSetChanged 从加载器 1
  • getView pos 1(反映加载程序 1 数据的更改)
  • getView pos 2(反映加载程序 1 数据的更改)
  • getView pos 3(反映加载程序 1 数据的更改)
  • 装载机2完成
  • getView pos 4(反映加载程序 1 数据的更改)
  • notifyDataSetChanged from loader 2
  • getView pos 5(反映加载程序 1 数据的更改)
  • getView pos 1(反映加载程序 2 数据的更改)
  • getView pos 2(反映加载程序 2 数据的更改)
  • getView pos 3(反映加载程序 2 数据的更改)
  • getView pos 4(反映加载程序 2 数据的更改)
  • getView pos 5(反映加载程序 2 数据的更改)

该列表显示新信息就好了。

但现在,我无法相信这一点。在 Android 4.2 上会发生以下情况:

  • 触发装载机 1
  • 触发装载机 2
  • 装载机 1 完成
  • notifyDataSetChanged 从加载器 1
  • getView pos 1(反映加载程序 1 数据的更改)
  • getView pos 2(反映加载程序 1 数据的更改)
  • getView pos 3(反映加载程序 1 数据的更改)
  • 装载机2完成
  • getView pos 4(反映加载程序 1 数据的更改)
  • notifyDataSetChanged 来自加载程序 2
  • getView pos 5(反映加载程序 1 数据的更改)

  • 结束 - 不再有应该反映第二个加载程序的 notifyDataSetChanged 的​​ getViews!

我希望这对你来说更清楚。

我对始终在 UI 线程上调用的 notifyDataSetChanged 的​​假设是:每次我调用它时,它必须强制重绘所有元素。但这不会发生。