Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在ListAdapter中查找新添加的行_Android_Android Listview_Android Arrayadapter - Fatal编程技术网

Android在ListAdapter中查找新添加的行

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

我正在将项目添加到自定义ArrayAdapter,然后尝试查找新添加的行以对其进行聚焦(更改背景颜色等)
只是在我无法确定事件发生的顺序。
我的代码类似于:
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()的最后一行