私は実際の問題の多くですが質問があります。 私は、それぞれ異なる情報を持つ複数のカードを持つアプリケーションを作成しています。私はCardViewAdapterとの内部にを作成しています。各カード用にViewHoldersを作成します。すべてがうまくいきます。複数の入れ子にされたViewHoldersを持つCardViewAdapter
私の質問は、ネストされたクラスを作成するより良い方法はありますか?なぜなら私はCardViewAdapterを読みにくくする200行以上のコードを持つ5つのViewHoldersを持っているからです。それを行うより実用的な方法はありますか、それともそれほど大丈夫ですか?私は別のことをやって、完全に異なるレイアウトを持っている5 ViewHolders内部の基本的
public class CardViewAdapter extends RecyclerView.Adapter<CardViewAdapter.ViewHolder> {
private Context mContext;
public CardViewAdapter(Context context) {
mContext = context;
}
private String[] mDataSet;
private int[] mDataSetTypes;
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
Context context = viewGroup.getContext();
View v;
ViewHolder holder;
if(viewType == 0){
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card1, viewGroup, false);
return new Card1ViewHolder(v);
} else if(viewType == 1) {
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card2, viewGroup, false);
return new Card2ViewHolder(v);
} else if(viewType == 2) {
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card3, viewGroup, false);
return new Card3ViewHolder(v);
} else if(viewType == 3) {
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card4, viewGroup, false);
return new Card4DialerViewHolder(v);
} else if(viewType == 4) {
v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card5, viewGroup, false);
return new Card5SettingsViewHolder(v);
} else {
return null;
}
}
@Override
public void onBindViewHolder(CardViewAdapter.ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 5;
}
@Override
public int getItemViewType(int position) {
int viewType = 0;
if(position == 0){
viewType = 0;
} else if (position == 1){
viewType = 1;
} else if (position == 2){
viewType = 2;
} else if (position == 3){
viewType = 3;
} else if (position == 4){
viewType = 4;
}
return viewType;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View v) {
super(v);
}
}
private class Card1ViewHolder extends ViewHolder{
//layout 1
}
private class Card2ViewHolder extends ViewHolder{
//layout 2
}
private class Card3ViewHolder extends ViewHolder {
//layout 3
}
private class Card4ViewHolder extends ViewHolder {
//layout 4
}
private class Card5ViewHolder extends ViewHolder {
//layout 5
}
}
。
Wtf?あなたが異なるコンテンツを持つカードを使いたい場合、構造体を動的に設定するための汎用の 'ViewHolder'と' CardItem'を作ります。 –
カード内のすべてのコンテンツに関する詳細情報を入力してください。私はあなたなしでそれ以上あなたを書くことはできません。 –
または 'CardViewAdapter'コード。 –