java如何在Android中动态转换类的实例
下面我给出了一个简短的示例代码。但是我在不同视图的点击事件中使用了这个开关。对于每种情况,我都需要在继续之前检查类的实例
public class OnResetListener implements View.OnClickListener {
private ViewHolder oHolder;
OnResetListener(ViewHolder holder) {
oHolder = holder;
}
@Override
public void onClick(View v) {
if(oHolder instanceof FolderVH){
((FolderVH) oHolder).viewPager.setCurrentItem(0, true);
} else if(oHolder instanceof NoteVH) {
((NoteVH) oHolder).viewPager.setCurrentItem(0, true);
} else if(oHolder instanceof CheckListVH) {
((CheckListVH) oHolder).viewPager.setCurrentItem(0, true);
}
}
}
这里的类从RecyclerView.ViewHolder
扩展而来,并命名为FolderVH
、NoteVH
和CheckListVH
。所有这些扩展类都具有完全相同的结构,但赋值不同
有没有一种方法可以动态转换类实例。。。说喜欢
if(oHolder instanceof FolderVH) oHolder = ((FolderVH) oHolder);
然后我只要在需要的地方使用oHolder
# 1 楼答案
您可以让所有三个
FolderVH
、NoteVH
和CheckListVH
扩展一个公共基类,比如ViewPagerVH
,它包含viewPager
字段:然后你可以这样检查:
# 2 楼答案
如果所有的视图持有者都有相同的结构,我会创建一个扩展RecyclerView的父类。ViewHolder(我们称之为“ParentViewHolder”)。然后你的视图持有者应该扩展你的“ParentViewHolder”。 最后,你可以把oHolder加入“ParentViewHolder”类,一切都应该正常。 希望我能理解并回答你的问题。:)