Android在ListAdapter中查找新添加的行
我正在将项目添加到自定义ArrayAdapter,然后尝试查找新添加的行以对其进行聚焦(更改背景颜色等)Android在ListAdapter中查找新添加的行,android,android-listview,android-arrayadapter,Android,Android Listview,Android Arrayadapter,我正在将项目添加到自定义ArrayAdapter,然后尝试查找新添加的行以对其进行聚焦(更改背景颜色等) 只是在我无法确定事件发生的顺序。 我的代码类似于: MainActivity接收一个addObject()事件。它调用将创建并返回newObject的模型: adapter.add(newObject); 在适配器getView()中,适配器将分配(创建或重用)行布局并设置其标记: row.setTag(newObject); 然后返回MainActivity addObject()ev
只是在我无法确定事件发生的顺序。
我的代码类似于:
MainActivity接收一个
addObject()
事件。它调用将创建并返回newObject的模型:
adapter.add(newObject);
在适配器getView()
中,适配器将分配(创建或重用)行布局并设置其标记:
row.setTag(newObject);
然后返回MainActivity addObject()eventmethod:
adaptersListview.findViewWithTag(newObject);
只有当我将消息放入adapter.getView()
中,并在findViewWithTag
之后,才会在getView
之前执行findViewWithTag
(设置标记)。这是因为适配器将在另一个线程(UiThread)上运行它的
getView
因此,findViewWithTag
将永远无法工作。在我使用pskink的listView.post()查找
findViewWithTag
之前,如何确保适配器已经完成了它的getView
我现在有这样的代码:listView.post(new Runnable() {
public void run() {
View rowToFocus = listView.findViewWithTag(newObject);
... more code ...
}
});
尝试在发布到处理程序的Runnable中调用findViewWithTag,或仅调用listView.post()您可以编辑getView()中的最后一行样式吗?您可以知道是否是具有
int position
和getCount()的最后一行代码>