0

我正在向自定义 ArrayAdapter 添加项目,然后尝试找到新添加的行以对其进行聚焦(更改背景颜色等)。
只有在我无法弄清楚事件发生的顺序时。
我的代码执行以下操作:
MainActivity 收到一个addObject()事件。它调用将创建并返回 newObject 的模型:

adapter.add(newObject);

在适配器getView()中,适配器将分配(创建或重用)一个行布局并设置它的标签:

row.setTag(newObject);

然后回到 MainActivity addObject() 事件方法:

adaptersListview.findViewWithTag(newObject);

adapter.getView()只有当我在 中和之后放入消息时findViewWithTag,才会在(设置标签)findViewWithTag之前执行。 这是因为适配器可能会在另一个线程(UiThread)上运行它吗? 所以永远不会工作。 如何确保适配器在我之前完成了它?getView
getView
findViewWithTag
getViewfindViewWithTag

4

1 回答 1

0

使用 pskink 的 listView.post() 对我有用,
我现在有如下代码:

listView.post(new Runnable() {
    public void run() {
        View rowToFocus = listView.findViewWithTag(newObject);
        ... more code ...
    }
});
于 2013-05-29T20:56:11.250 回答