Bre*_*ett 4 java data-binding android listview android-viewholder
我有一个Android活动,它从适配器类中的可观察列表中提取数据.
我getView()在我的适配器类的方法是:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null) {
inflater = (LayoutInflater) parent.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
// Perform the binding
ActivityTeamMessageListRowBinding binding = DataBindingUtil.inflate(inflater, R.layout.my_activity_list_row, parent, false);
binding.setInfo(list.get(position));
binding.executePendingBindings();
// Return the bound view
return binding.getRoot();
}
Run Code Online (Sandbox Code Playgroud)
这很有效.但是,我看到了Android的警告从视图适配器无条件布局通胀上ActivityTeamMessageListRowBinding binding ...线.
我一直在研究ViewHolders来解决这个问题,但我似乎无法弄清楚如何完成这个并仍然使用我的数据绑定.并且可能是,列表越长,我在不使用ViewHolder的情况下看到的性能就越差.
有谁知道如何扩展我的getView(...)代码以合并视图绑定器?我的my_activity_list_row.xml中有3 TextView秒和1 秒.ImageView
Com*_*are 19
试试这个:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null) {
inflater = ((Activity) parent.getContext()).getLayoutInflater();
}
// Perform the binding
ActivityTeamMessageListRowBinding binding = DataBindingUtil.getBinding(convertView);
if (binding == null) {
binding = DataBindingUtil.inflate(inflater, R.layout.my_activity_list_row, parent, false);
}
binding.setInfo(list.get(position));
binding.executePendingBindings();
// Return the bound view
return binding.getRoot();
}
Run Code Online (Sandbox Code Playgroud)
我没有使用数据绑定ListView(我将使用RecyclerView),但从袖口,这是我尝试.使用断点或日志来确认,如果convertView不是null,你会经常binding回来getBinding()(也许所有的时间 - 我对数据绑定的缓存如何工作很朦胧).
| 归档时间: |
|
| 查看次数: |
6228 次 |
| 最近记录: |