私は3種類の異なるArrayList
を持っていて、それぞれ特定のオブジェクトのデータを持っています:Type_A
,Type_B
およびType_C
です。各フィールドにはフィールドprivate String name
がありますので、そのフィールドをType_General
に移動し、3つのタイプすべてを汎用タイプに拡張しました。Generic Typeアダプタクラスを作成できません
アイテムのリストごとにアダプタを使いたいのですが、それらがすべて同じタイプ(Type_General
)を拡張していて、アダプタがList<Type_General>
を使用していると思ったので、3種類のアダプタを作成する必要はありません。
しかし、それはList<Type_General>
を期待し、私は私のアダプタクラスのList<Type_A>
コードを渡し原因私は私が私のIDE(Android Studio
)に赤い線のエラーを得たType_A
のための1つのインスタンス化しようとした私の遊園地へ
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)'を実行できますが、それはかなり醜いです。 –