Android 适配器 getView 更好地与 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;
}

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

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

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

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

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

最新更新