我有一個更實際的問題。 我正在創建一個具有多張卡片的應用程序,每張卡片都有不同的信息。我在創建CardViewAdapter和裏面我爲每張卡創建我的ViewHolders。一切運作良好。CardViewAdapter與多個嵌套的ViewHolders
我的問題是 - 是否有更好的方式來創建嵌套類?因爲我有5個ViewHolders,每個有200多行代碼,這使得我的CardViewAdapter非常難以閱讀。有沒有更實際的方法做到這一點,或者這樣很好?
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
}
}
基本上5個ViewHolders裏面我有完全不同的佈局做不同的事情。
Wtf?如果你想使用具有不同內容的卡片,請製作一個通用的'ViewHolder'和'CardItem',以便動態設置結構。 –
將更多關於卡內所有內容的信息。沒有它,我不會寫更多。 –
或'CardViewAdapter'代碼。 –