我将项目添加到自定义ArrayAdapter,然后尝试查找新添加的行以对其进行聚焦,(更改背景颜色等)
只有我无法弄清楚事件发生的顺序
我的代码做了类似的事情:
MainActivity收到addObject()
个事件。它调用Model,它将创建并返回newObject:
adapter.add(newObject);
在适配器getView()
中,适配器将分配(创建或重用)行 - 布局并设置它的标记:
row.setTag(newObject);
然后回到MainActivity addObject()eventmethod:
adaptersListview.findViewWithTag(newObject);
只有当我在adapter.getView()
和findViewWithTag
之后放置消息时,似乎findViewWithTag
在getView
(设置标记)之前执行。<登记/>
这是因为适配器可能会在另一个线程(UiThread)上运行它getView
吗?
所以findViewWithTag
永远不会奏效
在我getView
之前,如何确保适配器已经完成了findViewWithTag
?
答案 0 :(得分:0)
使用pskink的listView.post()为我工作了
我现在的代码如下:
listView.post(new Runnable() {
public void run() {
View rowToFocus = listView.findViewWithTag(newObject);
... more code ...
}
});