リサイクラビューでは、0,1,2,3などの文字列があり、同じrecyclerviewでは3番目のインデックスごとにimageviewのようなビューを配置したいと考えています。以下に述べるコードはうまくいきますが、画像ビューはシーケンスのように0のインデックスから始まります。 - Imageview - > 0,1,2 ---> imageview --->アダプタのandroidのリサイクラビューのすべての3番目のインデックスにビューを配置する方法は?
mList = (RecyclerView) findViewById(R.id.dealList);
layoutManager = new LinearLayoutManager(mContext);
mList.setLayoutManager(layoutManager);
mList.setHasFixedSize(true);
// set divider between items of list
mList.addItemDecoration(new DividerItemDecoration(mContext, DividerItemDecoration.VERTICAL));
list = getResources().getStringArray(R.array.list);
int size = list.length;
ArrayList<String> newList = new ArrayList<>();
for (int i = 0; i < size; i++) {
if (i%2==0){
newList.add(null);
}
newList.add(list[i]);
}
adapter = new CMyAdapter(mContext, newList);
mList.setAdapter(adapter);
コード: - - :
private Context mContext;
private ArrayList<String> newList;
private static final int CONTENT_TYPE = 0;
private static final int AD_TYPE = 1;
public CMyAdapter(Context context, ArrayList<String> list) {
this.mContext = context;
this.newList = list;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewHolder holder = null;
if (viewType == AD_TYPE) {
View adView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view2, parent, false);
holder = new AdViewHolder(adView);
} else {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view1, parent, false);
holder = new ItemViewHolder(itemView);
}
return holder;
}
@Override
public int getItemViewType(int position) {
if (newList.get(position) == null) {
return AD_TYPE;
} else {
return CONTENT_TYPE;
}
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if (newList.get(position) == null) {
AdViewHolder adViewHolder = (AdViewHolder) holder;
adViewHolder.m_dummyImage.setImageResource(R.mipmap.ic_launcher_round);
} else {
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
itemViewHolder.m_Text.setText(newList.get(position));
}
}
@Override
public int getItemCount() {
return newList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
ViewHolder(View itemView) {
super(itemView);
}
}
private class ItemViewHolder extends ViewHolder {
TextView m_Text;
ItemViewHolder(View itemView) {
super(itemView);
m_Text = (TextView) itemView.findViewById(R.id.textDemo);
}
}
private class AdViewHolder extends ViewHolder {
ImageView m_dummyImage;
AdViewHolder(View v) {
super(v);
m_dummyImage = (ImageView) itemView.findViewById(R.id.adImage);
}
}
}
それはmethid上 – Niraj