我正在使用具有多個不同佈局文件但共同視圖模型的RecyclerView進行數據綁定。有沒有辦法讓生成的Binding文件實現一個通用接口來簡化以下(工作但醜陋)的代碼?接口和生成的綁定文件
定佈局文件,如:
R.layout.list_item_cat
R.layout.list_item_dog
R.layout.list_item_mouse
內ActionAdapter:
@Override
public ActionAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
@LayoutRes int layoutToInflate;
switch (viewType) {
case 0:
layoutToInflate = R.layout.list_item_cat;
break;
case 1:
layoutToInflate = R.layout.list_item_dog;
break;
case 2:
layoutToInflate = R.layout.list_item_mouse;
break;
}
return new ViewHolder(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), layoutToInflate, parent, false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (holder.mBinding instanceof ListItemCatBinding) {
((ListItemCatBinding) holder.mBinding).setViewModel(mViewModelList.get(position));
}
else if (holder.mBinding instanceof ListItemDogBinding) {
((ListItemDogBinding) holder.mBinding).setViewModel(mViewModelList.get(position));
}
else if (holder.mBinding instanceof ListItemMouseBinding) {
((ListItemMouseBinding) holder.mBinding).setViewModel(mViewModelList.get(position));
}
我知道上面的例子是不是太糟糕,但它會很方便,能夠操縱一組綁定文件,它們共享相同的東西,而不必經常檢查和投射它們的類型,特別是在更復雜的情況下。
'executePendingBindings()'也可能值得打電話。 – tynn
同意。我會編輯它來補充。謝謝! –
好東西!還有一篇非常有用和相關的文章。 – Dave