Android adapter getView 更好地与 viewGroup 解耦

Android adapter getView better decoupling with a viewGroup

我想减少 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;
}

我从这个site

得到了这个想法

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

任何人都可以举例说明扩展 ViewGroup 后 MyViewGroup 会是什么样子,并说更新列表视图中的文本视图,因为我不了解如何构造自定义视图组以便更新文本视图?

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

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