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
方法减少代码重复。
我想减少 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
方法减少代码重复。