0

我想为 android 列表适配器的 getView 方法创建更少的工作。我一直在阅读我们可以让 ViewGroup 更新视图而不是 getView 方法,从而使滚动更快。我需要一些帮助来理解这个概念,这是我目前所拥有的:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    MyViewGroup myViewGroup;
    if (convertView == null) {
        myViewGroup = (MyViewGroup) LayoutInflater.from(context)
          .inflate(R.layout.banana_phone, parent, false);
    } else {
        myViewGroup = (MyViewGroup) convertView;
    }

    InfoObject info = getItem(position);

    myViewGroup.update(info); //how does this part work ? this is synchrounous so getView has to wait, doesn't it ?

    return myViewGroup;
}

我从这个网站得到了这个想法

所以我的问题是如何在不让 getView 等待的情况下进行 viewGroup 更新。我相信我在 getView 上面的实现会等到视图组更新,对吗?所以这仍然会减慢列表视图的速度。我想要一个自定义视图组的外观示例(或者如果是这种情况,则为非自定义)?

谁能举一个例子 MyViewGroup 在扩展 ViewGroup 后会是什么样子,并说更新列表视图中的文本视图,因为我不了解如何构建自定义视图组以便它更新文本视图?

4

1 回答 1

0

你是对的,update调用是(并且应该是!)同步的,并且getView必须等待。

为列表创建自己ViewGroup的列表提供了更好的解耦- 它没有性能优势,而是将视图中的值设置移动到适配器的单独类中。如果您随后在另一个布局中使用此视图,例如作为详细视图中的标题,您将通过使用该update方法减少代码重复。

于 2015-01-20T00:50:19.837 回答