下面我给出了一个简短的示例代码。但我在切换案例中使用此功能来处理 5 不同视图上的点击事件。对于每种情况,我都需要在继续之前检查类的实例。
RecyclerView.ViewHolder
此处的课程从 FolderVH
扩展而来,并命名为 NoteVH
, CheckListVH
,的 if(oHolder instanceof FolderVH) oHolder = ((FolderVH) oHolder);
即可。所有这些扩展类都具有完全相同的结构但不同的值赋值。
有没有办法可以动态地转换类实例......比如说
oHolder
然后我只需要使用background-attachment
。
答案 0 :(得分:1)
如果你的所有viewHolders具有相同的结构,我将concider创建一个扩展RecyclerView.ViewHolder的父类(让我们调用它" ParentViewHolder")。那么你的viewHolders应该扩展你的" ParentViewHolder"。 最后,你总是可以将oHolder强制转换为" ParentViewHolder"上课,一切都应该有效。 希望我理解并回答你的问题。 :)
答案 1 :(得分:1)
您可以让所有三个FolderVH
,NoteVH
和CheckListVH
扩展一个公共基类,比如ViewPagerVH
,其中包含viewPager
字段:
class ViewPagerVH extends RecyclerView.ViewHolder {
public ViewPager viewPager;
}
class FolderVH extends ViewPagerVH { ... }
// etc.
然后你可以像这样检查:
if (oHolder instanceof ViewPagerVH) {
((ViewPagerVH) oHolder).viewPager.setCurrentItem(0, true);
}