遇到这种的要怎么做呢?
哈哈,那肯定从适配器开始咯
item.getImagecount()这个可以跟后台商量具体怎么写这个方法
@Override
public int getItemViewType(int position) {
if(headerView ==null){
int type = super.getItemViewType(position);
if(type !=0){
return type;
}
Zxnr_all.DataBean item = getItem(position);//从后台获取的数据
if(item == null || "".equals(item)){
return 0;
}
if(item.getImagecount() ==0 ||"".equals(item.getImagecount())){
return 0;
}
if(item.getImagecount() ==5){
type = TYPE_RIGHT_IMAGE;
return type;
}
else{
type = TYPE_THREE_IMAGE;
return type;
}
}
if (position == 0) return ITEM_TYPE_HEADER;
Zxnr_all.DataBean item = getItem(position-1);
if(item == null || "".equals(item)){
return 0;
}
if(item.getImagecount() ==0 ||"".equals(item.getImagecount())){
return 0;
}
if(item.getImagecount() ==1){
return TYPE_THREE_IMAGE;
}
else {
return TYPE_RIGHT_IMAGE;
}
}
对了,就是这个getviewtype方法,这里面可以进行适配器中有一张或者三张图片样式
接下来就是初始化viewholder啦
@Override
public RecyclerView.ViewHolder getItemViewHolder(ViewGroup parent, int viewType) {
//创建不同的 ViewHolder
View view ;
if (headerView != null && viewType == ITEM_TYPE_HEADER)
return new RightImageHolder(headerView);
//根据viewtype来创建条目
if (viewType == TYPE_THREE_IMAGE) {
view =View.inflate(parent.getContext(),R.layout.item_three_img,null);
return new ThreeImageHolder(view);
// view =View.inflate(parent.getContext(),R.layout.item_right_img,null);
TextView shortTitle = (TextView) view.findViewById(R.id.shorttitle);
// return new RightImageHolder(view);
}
else{
view =View.inflate(parent.getContext(),R.layout.item_right_img,null);
return new RightImageHolder(view);
}
// else if (viewType ==ITEM_TYPE_HEADER) {
// view =View.inflate(parent.getContext(),R.layout.rv_header,null);
// return new HeaderViewHolder(view);
// }
// else {
// }
}
@Override
public void onBind(RecyclerView.ViewHolder holder1, int position) {
if (getItemViewType(position) == ITEM_TYPE_HEADER) return; final int pos = getRealPosition(holder1); final Zxnr_all.DataBean item = getItem(pos); switch (getItemViewType(position)) { case TYPE_RIGHT_IMAGE: RightImageHolder holder = (RightImageHolder) holder1; holder.tv_shorttitle.setTextSize(context.getSharedPreferences(Constant.TEXT_SIZE1, context.MODE_PRIVATE).getInt(Constant .TEXTSIZE_INTEGER, Constant.TEXTSIZE_CENTRE)); if(item ==null ||"".equals(item)){ return ; } if (!TextUtils.isEmpty(item.getPubdate())) { String timeStampAgo = TimeUtil.getTimeStampAgo(item.getPubdate()); holder.tv_readtime.setText(timeStampAgo);//时间转化 } // boolean isCheck = allBook.get(pos).getIsCheck(); // if(isCheck){ // holder.tv_shorttitle.setTextColor(getContext().getResources().getColor(R.color.line)); // } // else { // holder.tv_shorttitle.setTextColor(getContext().getResources().getColor(R.color.zxnr_list_shorttitle)); // } showImg(holder.img3,item.getImages().get(0)); holder.tv_shorttitle.setText(item.getTitle()); holder.tv_readtcount.setText(item.getClick()); break; case TYPE_THREE_IMAGE: ThreeImageHolder imageHolder = (ThreeImageHolder) holder1; // Log.e("item",""+item.toString()); imageHolder.tv_shorttitle1.setTextSize(context.getSharedPreferences(Constant.TEXT_SIZE1, context.MODE_PRIVATE).getInt(Constant .TEXTSIZE_INTEGER, Constant.TEXTSIZE_CENTRE)); if(item ==null ||"".equals(item)){ return ; } if (!TextUtils.isEmpty(item.getPubdate())) { String timeStampAgo = TimeUtil.getTimeStampAgo(item.getPubdate()); imageHolder.tv_readtime1.setText(timeStampAgo);//时间转化 } showImg(imageHolder.img,item.getImages().get(0)); if(item.getImages() !=null && item.getImages().size()>1){ // listTitle1.add(item.getImages().get(position)); showImg(imageHolder.img1,item.getImages().get(1)); showImg(imageHolder.img2,item.getImages().get(2)); } // if(allBook.get(pos) ==null &&allBook.size()==0){ // return; // } // boolean isCheck1 = allBook.get(pos).getIsCheck(); // if(isCheck1){ // imageHolder.tv_shorttitle1.setTextColor(getContext().getResources().getColor(R.color.line)); // } // else { // imageHolder.tv_shorttitle1.setTextColor(getContext().getResources().getColor(R.color.zxnr_list_shorttitle)); // } imageHolder.tv_shorttitle1.setText(item.getTitle()); imageHolder.tv_readtcount1.setText(item.getClick()); // imageHolder.tv_title.setText(currNM.title); // imageHolder.tv_author.setText(currNM.source); // imageHolder.tv_zan.setText(currNM.replyCount + "跟帖"); // Glide.with(mContext).load(currNM.imgsrc).into(imageHolder.iv_item_news_detail_rv); // Log.e("imageHolderleft",""+currNM.imgsrc); // break; }
大家如果不需要header的话可以去掉就可以啦,想对应的position就不需要减1啦~