我正在尝试使用Android 的数据绑定功能 http://developer.android.com/tools/data-binding/guide.html使用自定义适配器和 ListView。我在覆盖自定义适配器时遇到问题getView
method:
public class ChecksAdapter extends ArrayAdapter<Check> {
public ChecksAdapter(Context context, ObservableList<Check> checks) {
super(context, R.layout.check, checks);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheckBinding binding = DataBindingUtil.inflate(
LayoutInflater.from(getContext()),
R.layout.check, parent, false);
binding.setCheck(this.getItem(position));
// Return what?
}
}
所以我的问题是:
- 我在哪里可以获得
View
我应该返回的元素?或者换句话说,如何将对象绑定到膨胀/转换的视图?
- 我怎样才能重复使用
convertView
当使用数据绑定时?
- 这是实现这个的正确方法吗?该指南对 ListViews 不是很清楚
这是指南中 ListView 的唯一参考:
如果您在 ListView 或 RecyclerView 适配器中使用数据绑定项,您可能更喜欢使用:
ListItemBinding binding = ListItemBinding.inflate(layoutInflater, viewGroup, false);
//or
ListItemBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.list_item, viewGroup, false);
不过,为了平滑滚动,您应该执行以下操作..
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CheckBinding binding;
if(convertView == null) {
binding = DataBindingUtil.inflate(
LayoutInflater.from(getContext()),
R.layout.check, parent, false);
convertView = binding.getRoot();
}
else {
binding = (CheckBinding) convertView.getTag();
}
binding.setCheck(this.getItem(position));
convertView.setTag(binding);
return convertView;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)