2017-05-05 18 views
1

我有一個回收視圖,其中有像0,1,2,3等一些字符串,並在同一recyclerview我想放置一個像imageview每個第三個索引的視圖。下面提到的代碼工作正常,但問題是imageview從0索引開始,如序列: - Imageview - > 0,1,2 ---> imageview --->。在這裏,我不想顯示前索引0如何在android的每個回收站視圖的每個索引中放置視圖?

碼圖像視圖: -

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); 
    } 
} 

}

回答

0

你可以在做到這一點CMyAdapter

@Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     if (position%3==0) { 
      //TODO 
     } else { 
      //TODO  
     } 
    } 
+0

它是由上述methid做 – Niraj

1

添加(I!= 0)中,如果條件

if (i%2==0 && i!=0){ 
     newList.add(null); 
    } 
+0

ArrayList的 newList =新的ArrayList <>()相同;對於(int i = 0; i

0
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
if (position%3==0 && position>0){ 
    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)); 
} 
} 
+0

請解釋你的答案如何解決OP的問題。 –

+0

@Niraj看到我編輯的答案 – Lingeshwaran

相關問題