1. 程式人生 > >Android中實現多條目載入

Android中實現多條目載入

先寫幾個佈局檔案

public class MyAdapter extends BaseAdapter {
private Context mcontext;
private List<JsonBean.ResultBean.DataBean> list;

public MyAdapter(Context mcontext, List<JsonBean.ResultBean.DataBean> list) {
    this.mcontext = mcontext;
    this.list = list;
}

//進行奇偶判斷有幾個佈局
@Override
public int getItemViewType(int position) {
    if (list.get(position).getThumbnail_pic_s02() != null && list.get(position).getThumbnail_pic_s03() != null) {
        return 2;
    } else if (list.get(position).getThumbnail_pic_s02() != null && list.get(position).getThumbnail_pic_s03() == null) {
        return 1;
    }
    return 0;
}

//有幾個佈局
@Override
public int getViewTypeCount() {
    return 3;
}

@Override
public int getCount() {
    return list.size();
}

@Override
public Object getItem(int position) {
    return list.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    int type = getItemViewType(position);
    ViewHolder1 holder1 = null;
    ViewHolder2 holder2 = null;
    ViewHolder3 holder3 = null;
    switch (type) {
        case 0:
            if (convertView == null) {
                holder1 = new ViewHolder1();
                convertView = View.inflate(mcontext, R.layout.list_item1, null);
                holder1.image1 = convertView.findViewById(R.id.image1);
                holder1.title1 = convertView.findViewById(R.id.title1);
                holder1.url1 = convertView.findViewById(R.id.url1);
                convertView.setTag(holder1);
            } else {
                holder1 = (ViewHolder1) convertView.getTag();
            }
            JsonBean.ResultBean.DataBean dataBean1 = list.get(position);
            Picasso.with(mcontext).load(dataBean1.getThumbnail_pic_s()).into(holder1.image1);
            holder1.url1.setText(dataBean1.getUrl());
            holder1.title1.setText(dataBean1.getTitle());
            break;
        case 1:
            if (convertView == null) {
                holder2 = new ViewHolder2();
                convertView = View.inflate(mcontext, R.layout.list_item2, null);
                holder2.tu1 = convertView.findViewById(R.id.tu1);
                holder2.tu2 = convertView.findViewById(R.id.tu2);
                holder2.title2 = convertView.findViewById(R.id.title2);
                holder2.url2 = convertView.findViewById(R.id.url2);
                convertView.setTag(holder2);
            } else {
                holder2 = (ViewHolder2) convertView.getTag();
            }
            JsonBean.ResultBean.DataBean dataBean2 = list.get(position);
            Picasso.with(mcontext).load(dataBean2.getThumbnail_pic_s()).into(holder2.tu1);
            Picasso.with(mcontext).load(dataBean2.getThumbnail_pic_s02()).into(holder2.tu2);
            holder2.url2.setText(dataBean2.getUrl());
            holder2.title2.setText(dataBean2.getTitle());
            break;
        case 2:
            if (convertView == null) {
                holder3 = new ViewHolder3();
                convertView = View.inflate(mcontext, R.layout.list_item3, null);
                holder3.image2 = convertView.findViewById(R.id.image2);
                holder3.image3 = convertView.findViewById(R.id.image3);
                holder3.image4 = convertView.findViewById(R.id.image4);
                holder3.mtitle = convertView.findViewById(R.id.mtitle);
                holder3.url = convertView.findViewById(R.id.url);
                convertView.setTag(holder3);
            } else {
                holder3 = (ViewHolder3) convertView.getTag();
            }
            JsonBean.ResultBean.DataBean dataBean = list.get(position);
            Picasso.with(mcontext).load(dataBean.getThumbnail_pic_s()).into(holder3.image2);
            Picasso.with(mcontext).load(dataBean.getThumbnail_pic_s02()).into(holder3.image3);
            Picasso.with(mcontext).load(dataBean.getThumbnail_pic_s03()).into(holder3.image4);
            holder3.url.setText(dataBean.getUrl());
            holder3.mtitle.setText(dataBean.getTitle());
            break;
    }
    return convertView;
}

class ViewHolder1 {
    ImageView image1;
    TextView title1, url1;
}

class ViewHolder2 {
    ImageView tu1, tu2;
    TextView title2, url2;
}

class ViewHolder3 {
    ImageView image2, image3, image4;
    TextView mtitle, url;
}

}