如果我有50种观点怎么办?我的适配器中应该有50个静态内部类吗?根据这个答案,是的.
我的第一个想法是将每个视图内部类移动到一个单独的公共类中,但它们必须是静态的.所以将每个封装到一个公共类中,使内部类静态?有没有更好的选择?
编辑:代码示例:那么这将是一个很好的解决方案?这不也会扼杀性能吗?
public class MainViewHolder extends DragSortAdapter.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
View container;
TextView title;
//called in onCreateViewHolder in adapter
public MainViewHolder(DragSortAdapter adapter, View itemView) {
super(adapter, itemView);
container = itemView.findViewById(R.id.card_root);
title = container.findViewById(R.id.text);
}
//called by onBindViewHolder in adapter
public void setData(Data data) {
title.setText(data.title);
}
}
Run Code Online (Sandbox Code Playgroud)
edit2:sample,用于返回viewholder的新实例
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case 0: return new MainViewHolder(...);
case 2: return new MainViewHolderOther(...);
...
}
}
Run Code Online (Sandbox Code Playgroud)