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

實現多條目載入

public class MyAdapter extends BaseAdapter {

private Context context;
private List<User.ResultBean.DataBean> list;

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

@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 int getViewTypeCount() {
    return 3;
}

//判斷返回型別
@Override
public int getItemViewType(int position) {
    //得到實體類
    User.ResultBean.DataBean bean = list.get(position);
    int type=0;
    //判斷哪一個佈局
    if(bean.getThumbnail_pic_s03()!=null){
        type=2;
    }else if(bean.getThumbnail_pic_s02()!=null&&bean.getThumbnail_pic_s03()==null){
        type=1;
    }
    return type;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //判斷
    //int i = position % 3;

    int i=getItemViewType(position);
    switch (i) {
        case 0:
            ViewHolder1 holder1=null;

            if (convertView == null) {
                convertView = View.inflate(context, R.layout.item_one, null);
                CircleImageView image11 = convertView.findViewById(R.id.image11);
                TextView textView = convertView.findViewById(R.id.text1);
                //設定給ViewHolder
                holder1 = new ViewHolder1(textView, image11);
                convertView.setTag(holder1);
            }  else {
                holder1 = (ViewHolder1) convertView.getTag();
            }

            holder1.getText1().setText(list.get(position).getUrl());
            String thumbnail_pic_s = list.get(position).getThumbnail_pic_s();


            //載入圖片
            ImageLoader.getInstance().displayImage(thumbnail_pic_s, holder1.getImage11(), Myapp.getOptions());

            break;
        case 1:

            ViewHolder2 holder2=null;

            if (convertView == null) {
                //設定檢視
                convertView = View.inflate(context, R.layout.item_two, null);
                //找控制元件
                ImageView image22 = convertView.findViewById(R.id.image22);
                ImageView image21 = convertView.findViewById(R.id.image21);
                TextView textView2 = convertView.findViewById(R.id.text2);
                //設定給viewHolder
                holder2 = new ViewHolder2(textView2, image21, image22);
                convertView.setTag(holder2);
            } else {
                holder2 = (ViewHolder2) convertView.getTag();
            }

            holder2.getText2().setText(list.get(position).getUrl());
            String thumbnail_pic_s1 = list.get(position).getThumbnail_pic_s();
            String thumbnail_pic_s2 = list.get(position).getThumbnail_pic_s02();

            //載入圖片
            ImageLoader.getInstance().displayImage(thumbnail_pic_s1, holder2.getImage21(), Myapp.getOptions());
            ImageLoader.getInstance().displayImage(thumbnail_pic_s2, holder2.getImage22(), Myapp.getOptions());


            break;
        case 2:
            ViewHolder3 holder3;

            if (convertView == null) {
                convertView = View.inflate(context, R.layout.item_three, null);
                ImageView image32 = convertView.findViewById(R.id.image32);
                ImageView image33 = convertView.findViewById(R.id.image33);
                ImageView image31 = convertView.findViewById(R.id.image31);
                TextView textView3 = convertView.findViewById(R.id.text3);
                //例項化物件
                holder3 = new ViewHolder3(textView3, image31, image32, image33);
                convertView.setTag(holder3);
            } else {
                holder3 = (ViewHolder3) convertView.getTag();
            }
            //設定控制元件的值
            holder3.getText3().setText(list.get(position).getUrl());
            String thumbnail_pic_s01 = list.get(position).getThumbnail_pic_s();
            String thumbnail_pic_s02 = list.get(position).getThumbnail_pic_s02();
            String thumbnail_pic_s03 = list.get(position).getThumbnail_pic_s03();

            //載入圖片    三個引數(圖片,控制元件,設定APP方法)
            ImageLoader.getInstance().displayImage(thumbnail_pic_s01, holder3.getImage31(), Myapp.getOptions());
            ImageLoader.getInstance().displayImage(thumbnail_pic_s02, holder3.getImage32(), Myapp.getOptions());
            ImageLoader.getInstance().displayImage(thumbnail_pic_s03, holder3.getImage33(), Myapp.getOptions());

            break;
    }


    return convertView;
}

class ViewHolder1 {
    private TextView text1;
    private CircleImageView image11;

    public ViewHolder1(TextView text1, CircleImageView image11) {
        this.text1 = text1;
        this.image11 = image11;
    }

    public TextView getText1() {
        return text1;
    }

    public void setText1(TextView text1) {
        this.text1 = text1;
    }

    public CircleImageView getImage11() {
        return image11;
    }

    public void setImage11(CircleImageView image11) {
        this.image11 = image11;
    }
}

//建立第二個viewholder
class ViewHolder2 {
    TextView text2;
    ImageView image21;
    ImageView image22;

    public ViewHolder2(TextView text2, ImageView image21, ImageView image22) {
        this.text2 = text2;
        this.image21 = image21;
        this.image22 = image22;
    }

    public TextView getText2() {
        return text2;
    }

    public void setText2(TextView text2) {
        this.text2 = text2;
    }

    public ImageView getImage21() {
        return image21;
    }

    public void setImage21(ImageView image21) {
        this.image21 = image21;
    }

    public ImageView getImage22() {
        return image22;
    }

    public void setImage22(ImageView image22) {
        this.image22 = image22;
    }
}

class ViewHolder3 {
    TextView text3;
    ImageView image31;
    ImageView image32;
    ImageView image33;

    public ViewHolder3(TextView text3, ImageView image31, ImageView image32, ImageView image33) {
        this.text3 = text3;
        this.image31 = image31;
        this.image32 = image32;
        this.image33 = image33;
    }

    public TextView getText3() {
        return text3;
    }

    public void setText3(TextView text3) {
        this.text3 = text3;
    }

    public ImageView getImage31() {
        return image31;
    }

    public void setImage31(ImageView image31) {
        this.image31 = image31;
    }

    public ImageView getImage32() {
        return image32;
    }

    public void setImage32(ImageView image32) {
        this.image32 = image32;
    }

    public ImageView getImage33() {
        return image33;
    }

    public void setImage33(ImageView image33) {
        this.image33 = image33;
    }
}

}