小编tom*_*ash的帖子

Android,ListView IllegalStateException:"适配器的内容已更改,但ListView未收到通知"

我想做什么:运行后台线程计算ListView内容并部分更新ListView,同时计算结果.

我知道我必须避免:我不能从后台线程中弄乱ListAdapter内容,所以我继承了AsyncTask并从onProgressUpdate发布结果(向适配器添加条目).我的适配器使用结果对象的ArrayList,这些arraylists上的所有操作都是同步的.

其他人的研究:有非常有价值的数据在这里.对于500名用户来说,我几乎每天都会遇到崩溃,当我list.setVisibility(GONE)/trackList.setVisibility(VISIBLE)在onProgressUpdate中添加了阻塞时,崩溃率下降了10倍但没有消失.(有人建议回答)

我有时得到的:请注意,它很少发生(每周一次为3.5k用户之一).但我想完全摆脱这个错误.这是部分堆栈跟踪:

`java.lang.IllegalStateException:` The content of the adapter has changed but ListView  did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. [in ListView(2131296334, class android.widget.ListView) with Adapter(class com.transportoid.Tracks.TrackListAdapter)]
at android.widget.ListView.layoutChildren(ListView.java:1432)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:2062)
at android.widget.ListView.onTouchEvent(ListView.java:3234)
at android.view.View.dispatchTouchEvent(View.java:3709)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
[...]
Run Code Online (Sandbox Code Playgroud)

救命?不再需要了,见下文

最终答案:事实证明,我notifyDataSetChanged每次调用5次以避免闪烁和突然更改列表.它不能这样做,总是在基本列表更改时通知适配器.这个错误现在已经消失了.

android listview exception adapter

187
推荐指数
6
解决办法
12万
查看次数

如何在Windows下检查给定字符串是否是合法/有效的文件名?

我想在我的应用程序中包含批处理文件重命名功能.用户可以键入目标文件名模式和(在替换模式中的一些通配符之后)我需要检查它是否是Windows下的合法文件名.我试过使用正则表达式,[a-zA-Z0-9_]+但它不包括来自各种语言的许多国家特定字符(例如变音符号等).做这种检查的最佳方法是什么?

c# windows filesystems file

156
推荐指数
13
解决办法
15万
查看次数

如何使用自定义类属性枚举所有类?

问题基于MSDN示例.

假设我们在独立桌面应用程序中有一些带有HelpAttribute的C#类.是否可以枚举具有此类属性的所有类?以这种方式识别课程是否有意义?自定义属性将用于列出可能的菜单选项,选择项将带到此类的屏幕实例.课程/项目的数量将缓慢增长,但我认为这样我们可以避免在其他地方列举所有课程/项目.

c# attributes class enumerate custom-attributes

144
推荐指数
5
解决办法
8万
查看次数

Galaxy S5 Lollipop - not all breakpoints stop execution under Android Studio debugger

After upgrading Samsung Galaxy S5 SM-G900F to Lollipop (Android 5.0) I noticed strange behavior:

not all breakpoints are being caught within Android Studio.

Here is environment description and my observations

  • Windows 8.1 x64
  • Android Studio 1.0.2 with SDK Tools 24.0.2
  • Sun jdk1.7.0_55
  • under SDK emulator all breakpoints are caught
  • under Genymotion all breakpoints are caught
  • under Galaxy S3 with 4.4.4 all breakpoints are caught
  • under Galaxy S5 SM-G900F with 5.0 not all exceptions are caught

I tried rebooting phone, rebooting …

debugging android galaxy s5 android-studio

48
推荐指数
1
解决办法
3277
查看次数

Android:长按ExpandableListView的子视图?

ExpandableListView有一个setOnChildClickListener方法,但缺少setOnChild Long ClickListener方法.

当我添加setOnLongClickListener()了子视图时getChildView(),整个子列表变得完全无法点击(尽管parentView.setOnChildClickListener()存在并且之前正在工作).

如何在子视图上启用长按?

android

46
推荐指数
4
解决办法
3万
查看次数

Android:自动选择调试/发布Maps api密钥?

OBSOLETED:这个旧问题是指过时的Google Maps v1 API.使用v2 API时,您可以在一个Google API控制台条目中使用多个证书指纹.API密钥不再存储在Manifest或代码中.


是否可以自动检测哪个证书用于签名APK?我想在应用程序中同时调试和发布Maps证书,并将有效的证书传递给MapView构造函数.

通过这样的设置,我在发布应用程序时不会出错 - 我在模拟器和我的设备上使用调试证书,然后在将应用程序发送到Market之前使用第一版进行签名.

我正在考虑检测我的特定设备或调试器是否已连接,但它并不完美.也许某些文件标记需要调试证书?有没有更好的方法?

debugging android google-maps key android-mapview

40
推荐指数
4
解决办法
2万
查看次数

Android - 如何更新小部件,但只有在可见时?

我将创建需要每分钟更新其内容的小部件(它显示与时间相关的数据).

但是,如果窗口小部件当前不可见,则无需更新窗口小部件,这意味着:

  • 屏幕已关闭
  • 另一个应用正在运行
  • 小部件放在另一个(不可见的)主屏幕选项卡上

每分钟仅更新可见小部件的最佳方法是什么 - 无需唤醒设备或进行不必要的计算?在小部件变得可见之后,更新前的小延迟是可接受的.

android visible android-appwidget

30
推荐指数
3
解决办法
1万
查看次数

与地点无关的"atof"?

我正在解析固定NMEA句子中的GPS状态条目,其中地理分钟的一小部分总是在一段时间之后.但是,在locale将逗号定义为小数分隔符的系统上,atof函数忽略句点和整数小数部分.

处理这个问题的最佳方法是什么?存储在字符数组中的长/纬度字符串,如果重要的话.

示例代码:

m_longitude = atof((char *)pField); 
Run Code Online (Sandbox Code Playgroud)

哪里

pField[] = "01000.3897"; 
Run Code Online (Sandbox Code Playgroud)

跨平台项目,为Windows XP和CE编译.

评论解决方案:

接受的答案更优雅,但这个答案(和评论)也值得快速解决

c++ locale atof

21
推荐指数
3
解决办法
1万
查看次数

如何在单个EXE中嵌入多语言*.resx(或*.resources)文件?

有很多教程如何创建多语言RESX文件以及如何使用AL.exe创建附属程序集,但我还没有找到工作示例如何在单个EXE文件中嵌入RESX/Resources/satellite-DLL文件并分发整个多语言应用程序就像这样的EXE.

我试图使用ilmerge.exe,但它看起来不适用于具有相同名称的多个DLL(文化卫星DLL具有相同的名称,最初驻留在以文化命名的不同子目录中).

我也不知道如何创建ResourceManager实例来使用嵌入式资源.

我的目标是在封闭的,预定义的语言集之间实现动态切换.我需要类/方法,它将获得文化字符串(即"de-DE"),资源名称(即"CancelText")并返回基于嵌入式 resx/resource/dll的翻译文本.

我正在使用VS2008,请注意resx/resource files属性表中需要"构建操作"的设置.工作代码示例或指向教程项目的链接将是最好的.

c# embed internationalization embedded-resource

20
推荐指数
2
解决办法
2万
查看次数

Android:如何在使用相同证书签名的项目之间共享代码

在有关代码签名的Android 文档中,我们可以读到:" 通过使用相同的证书签署多个应用程序并使用基于签名的权限检查,您的应用程序可以以安全的方式共享代码和数据. "

如何才能完成这样的代码共享?是否可以在运行时发布主应用程序和多个可交换插件然后发现它们?什么是源代码看起来像什么是"标准"意图的优势来自/到不同的APK包?

android code-signing certificate apk

15
推荐指数
2
解决办法
4966
查看次数