我想做什么:运行后台线程计算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次以避免闪烁和突然更改列表.它不能这样做,总是在基本列表更改时通知适配器.这个错误现在已经消失了.
是否有关于Google代码的所有代码项目的概述?我可以访问的URL是什么?
我的项目未包含在https://www.google.com/dashboard/的信息中心内
试着这样做:
SELECT CASE WHEN field = true THEN one * another ELSE one END as case_field
FROM table WHERE case_field >= 9000
Run Code Online (Sandbox Code Playgroud)
并收到case_field不存在的错误.
是否可以在不重复CASE的情况下执行此操作?
我想允许用户使用OpenID登录我的网站.到目前为止,我已经整合了谷歌和雅虎.
还有哪些其他流行服务提供OpenID登录端点?我特别感兴趣的是Windows Live(但从我看到他们最近关闭了端点,我找不到任何关于新端点的信息).社交网站如Facebook或Twitter怎么样?
我见过OpenID目录,但我没有找到任何有用的信息.
以下是一个失败的单元测试,解释了我今天发现的一个错误:
[TestMethod]
public void WFT()
{
string configDebug = "false";
bool configDebugEnabled = bool.TryParse(configDebug, out configDebugEnabled);
Assert.AreEqual(false, configDebugEnabled);
}
Run Code Online (Sandbox Code Playgroud)
这是如何使测试从红色变为绿色:
[TestMethod]
public void WFT()
{
string configDebug = "false";
bool configDebugEnabled;
bool.TryParse(configDebug, out configDebugEnabled);
Assert.AreEqual(true, configDebugEnabled);
}
Run Code Online (Sandbox Code Playgroud)
我无法在C#规范中找到解释这一段的段落,但对这种行为很可能是一个不错的解释.任何人都可以向我解释为什么第一次测试失败了吗?
据说Python 2.6.5支持Unicode?为什么listdir()不在IDLE中,但是Python 3.1.2确实在IDLE中显示了Unicode?(这是在Windows 7上测试的)
以下代码是相同的行为:
for dirname, dirnames, filenames in os.walk('c:\path\somewhere'):
for subdirname in dirnames:
print (os.path.join(dirname, subdirname))
for filename in filenames:
print (os.path.join(dirname, filename))
Run Code Online (Sandbox Code Playgroud)
更新: unicode在文件名中,而不在路径中...
我正在为游戏创建一个分数列表.现在大多数列表我需要具有相同的ItemRenderer.但是在列出正在播放的用户的列表的一个特定行中,它应该显示不同的信息并且具有不同的背景颜色.我怎么能实现这个目标?
我已经尝试用状态解决问题,我创建了2个状态,一个状态称为"我的",第二个状态称为"其他".
我得到的问题是,当用户点击其中一个列表行,表明对我的改变时,我没有点击或者某事,这就是为什么我认为状态对我来说不是正确的行为.
我正在移动网站上工作,并希望使用我的iPhone浏览器进行测试.我的Windows 7机器和iPhone在同一个无线网络上.如何从iPhone访问localhost?现在我收到404错误.
在ASP.NET MVC 2中,我有一个Linq to sql类,其中包含一系列字段。现在,当另一个字段具有特定(枚举)值时,则需要其中一个字段。
到目前为止,我编写了一个自定义验证属性,该属性可以将枚举作为属性,但是我不能说,例如: EnumValue = this.OtherField
我应该怎么做?
给定C#中的任意枚举,如何选择随机值?
(我没有在SO上找到这个非常基本的问题.我会在一分钟内发布我的答案作为参考,但是请随时发表你自己的答案.)
c# ×3
adapter ×1
android ×1
apache-flex ×1
enums ×1
exception ×1
flex4 ×1
google-code ×1
iphone ×1
itemrenderer ×1
list ×1
listview ×1
localhost ×1
openid ×1
postgresql ×1
python ×1
random ×1
sql ×1
unicode ×1