我有3个不同的ArrayList
s和每个具有来自特定对象的数据:Type_A
,Type_B
和Type_C
。每个人都有一个字段private String name
,所以我将该字段移至Type_General
,并将所有3种类型扩展为一般类型。创建通用类型适配器类不工作
我想用一个适配器项目的每个列表,我想,如果他们都继承同一类型(Type_General
)和适配器使用List<Type_General>
我不会要创建3个不同的适配器,一个用于所有类型。
但要因为它需要一个List<Type_General>
,我通过我的Adapter类的List<Type_A>
代码我游时,我试图实例化一个Type_A
我在我的IDE(Android Studio
)有一个红线错误:
class SuggestionsAdapter extends RecyclerView.Adapter<SuggestionsAdapter.ViewHolder> {
private List<Type_General> mDataset;
private EditProfileFragment.SuggestionsEditTextEnum editTextEnum;
private EditText editText;
private RecyclerView recyclerView;
class ViewHolder extends RecyclerView.ViewHolder {
TextView mTextView;
ViewHolder(TextView v) {
super(v);
mTextView = v;
}
}
SuggestionsAdapter(List<Type_General> myDataset, EditProfileFragment.SuggestionsEditTextEnum editTextEnum,
EditText editText, RecyclerView recyclerView) {
mDataset = myDataset;
this.editTextEnum = editTextEnum;
this.editText = editText;
this.recyclerView = recyclerView;
}
@Override
public SuggestionsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.textview_with_rounded_corners, parent, false);
return new ViewHolder((TextView) v);
}
@Override
public void onBindViewHolder(final SuggestionsAdapter.ViewHolder holder, final int position) {
holder.mTextView.setText(capitalizeFirstLetter(mDataset.get(position).getName()));
holder.mTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (editTextEnum) {
case Type_A:
recyclerView.setVisibility(View.GONE);
break;
case Type_B:
recyclerView.setVisibility(View.GONE);
break;
case Type_C:
recyclerView.setVisibility(View.GONE);
break;
}
}
});
}
public void addItem(Type_General item) {
mDataset.add(item);
}
public void addAllItems(List<Type_General> items) {
mDataset.clear();
mDataset.addAll(items);
}
@Override
public int getItemCount() {
return mDataset.size();
}
}
因为Type_General
是Type_A
,Type_B
和Type_C
的父类,不应该这样工作吗?
收藏品不能铸造到集合。但是你可以做'Collection collection =(Collection )((Object)yourParentClassCollection)',但这很丑陋。 –