优雅的用listview实现多条目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30519365/article/details/53953962

listview ,Recyclerview 一般情况listview 三级缓存已经满足大部分开发需要了,

package com.netease.nim.demo.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.netease.nim.demo.R;
import com.netease.nim.demo.domain.TDjLBean;
import com.zhy.autolayout.utils.AutoUtils;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
/**
 * Created by Administrator on 2016/12/29.
 */
public class _BaseAdapter extends BaseAdapter {
    private  List<TDjLBean.DataEntity> data;
    private Context ctx;
    private static final int TYPE3 = 3;//不合适
    private static final int TYPE2 = 2;//被查看
    private static final int TYPE1= 1;//已投递
    private static final int TYPE4= 4;//有意向
    private static final int TYPE5= 5;//已接受
    private static final int TYPE6= 6;//邀面试
    private static final int TYPE_COUNT = 7;//item类型的总数
    public _BaseAdapter(Context ctx, List<TDjLBean.DataEntity> data) {
        this.ctx = ctx;
        this.data=data;
    }
    @Override
    public int getCount() {
        return data.size();
    }
    @Override
    public Object getItem(int i) {
        return data.get(i);
    }
    @Override
    public long getItemId(int i) {
        return 0;
    }
    @Override
    public int getViewTypeCount() {

        return 7;
    }
    @Override
    public int getItemViewType(int position) {
        System.out.println("------pos->>>>>"+position);
        if ("已投递".equals(data.get(position).getDeliveryStatus())){
            return TYPE1;
        }
        if ("被查看".equals(data.get(position).getDeliveryStatus())){
            return TYPE2;
        }
        else if ("不合适".equals(data.get(position).getDeliveryStatus())){
            return TYPE3;
        }
         else if ("邀面试".equals(data.get(position).getDeliveryStatus())){
           return TYPE6;
        }
        else if ("已接受".equals(data.get(position).getDeliveryStatus())){
          return TYPE5;
        }
        else if ("有意向".equals(data.get(position).getDeliveryStatus())){
           return TYPE4;
        }
       return 0;
    }
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
      //View inflate = LayoutInflater.from(ctx).inflate(R.layout.tdjl_lv_item, viewGroup, false);

        System.out.println("===========>>>"+i);
      int itemViewType = getItemViewType(i);
        //获取当前类型;
        CommonHolder cholder=null;
      YYXHolder yxxholder=null;
      YMshiHolder holder=null;
        if (view==null){
            switch (itemViewType){
                case TYPE1:
                case TYPE2:
                case TYPE3:
                case TYPE5:
                    cholder=new CommonHolder();
                    view= LayoutInflater.from(ctx).inflate(R.layout.tdjl_common_item, null, false);
                    cholder.tx= (CircleImageView) view.findViewById(R.id.tx);
                     cholder.zwm= (TextView) view.findViewById(R.id.zwm);
                    cholder.time= (TextView) view.findViewById(R.id.time);
                    cholder.gsi= (TextView) view.findViewById(R.id.gsi);
                    cholder. xinzi= (TextView) view.findViewById(R.id.xinzi);
                    cholder. address= (TextView) view.findViewById(R.id.address);
                    cholder. xueli= (TextView) view.findViewById(R.id.xueli);
                    cholder.iv_tag=(ImageView)view.findViewById(R.id.iv_tag);
                   view.setTag(cholder);
                    AutoUtils.autoSize(view);


                    break;
                case TYPE4://有意向
                    view= LayoutInflater.from(ctx).inflate(R.layout.td_lv_yxxiang_item, null, false);

                                        yxxholder=new YYXHolder();

                    yxxholder.tx= (CircleImageView) view.findViewById(R.id.tx);
                    yxxholder.zwm= (TextView) view.findViewById(R.id.zwm);
                    yxxholder.time= (TextView) view.findViewById(R.id.time);
                    yxxholder.gsi= (TextView) view.findViewById(R.id.gsi);
                    yxxholder.xinzi= (TextView) view.findViewById(R.id.xinzi);
                    yxxholder.address= (TextView) view.findViewById(R.id.address);
                    yxxholder.xueli= (TextView) view.findViewById(R.id.xueli);
                    view.setTag(yxxholder);
                    AutoUtils.autoSize(view);


                    break;
                case TYPE6://邀面试
                    view= LayoutInflater.from(ctx).inflate(R.layout.tdjl_lv_item, null, false);
                    holder=new YMshiHolder();
                    holder.tx= (CircleImageView) view.findViewById(R.id.tx);
                    holder.zwm= (TextView) view.findViewById(R.id.zwm);
                    holder.time= (TextView) view.findViewById(R.id.time);
                    holder.gsi= (TextView) view.findViewById(R.id.gsi);
                    holder.xinzi= (TextView) view.findViewById(R.id.xinzi);
                    holder.address= (TextView) view.findViewById(R.id.address);
                    holder.xueli= (TextView) view.findViewById(R.id.xueli);
                    view.setTag(holder);
                    AutoUtils.autoSize(view);


                    break;
            }
        }
        else{
            switch (itemViewType){
                case TYPE1:
                case TYPE2:
                case TYPE3:
                case TYPE5:
                    cholder= (CommonHolder) view.getTag();
                    break;
                case TYPE4:
                    yxxholder= (YYXHolder) view.getTag();
                    break;
                case TYPE6:
                    holder= (YMshiHolder) view.getTag();
                    break;
            }
        }
        switch (itemViewType){
            case TYPE1:
            case TYPE2:
            case TYPE3:
              case TYPE5:
                Glide.with(ctx).load(data.get(i).getLogo()).into(cholder.tx);
                cholder.zwm.setText(data.get(i).getJopTitle());
                cholder. gsi.setText(data.get(i).getCompanyName());
                cholder. time.setText(data.get(i).getDeliveryTime());
                cholder.xinzi.setText(data.get(i).getSalary());
                cholder.xueli.setText(data.get(i).getDegree());
                cholder. address.setText(data.get(i).getWorkPlace());
                if (itemViewType==2){
                    cholder. iv_tag.setImageResource(R.mipmap.beichankan);
                }
                if (itemViewType==3){
                    //
                    cholder. iv_tag.setImageResource(R.mipmap.buheshi);
                }
                if (itemViewType==5){
                    cholder.iv_tag.setImageResource(R.mipmap.yijieshou);
                }
                break;
            case TYPE4:
                Glide.with(ctx).load(data.get(i).getLogo()).into(yxxholder.tx);
                yxxholder. zwm.setText(data.get(i).getJopTitle());
                yxxholder.gsi.setText(data.get(i).getCompanyName());
                yxxholder.time.setText(data.get(i).getDeliveryTime());
                yxxholder.xinzi.setText(data.get(i).getSalary());
                yxxholder.xueli.setText(data.get(i).getDegree());
                yxxholder.address.setText(data.get(i).getWorkPlace());
                break;
            case TYPE6:
                Glide.with(ctx).load(data.get(i).getLogo()).into(holder.tx);
                holder.zwm.setText(data.get(i).getJopTitle());
                holder. gsi.setText(data.get(i).getCompanyName());
                holder.time.setText(data.get(i).getDeliveryTime());
                holder.xinzi.setText(data.get(i).getSalary());
                holder. xueli.setText(data.get(i).getDegree());
                holder.address.setText(data.get(i).getWorkPlace());
                break;
        }

        return  view;


    }
    /**
     * 邀面试的view
     */
    class  YMshiHolder{
        CircleImageView tx;
        TextView zwm;
        TextView time;
        TextView gsi;
        TextView xinzi;
        TextView address;
        TextView xueli;
    }
    /**
     * 有意向
     */
     class  YYXHolder{
        CircleImageView tx;
        TextView zwm;
        TextView time;
        TextView gsi;
        TextView xinzi;
        TextView address;
        TextView xueli;
    }

    /**
     * 剩余四种情况的viewholder
     */
    class CommonHolder{
        CircleImageView tx;
        TextView zwm;
        TextView time;
        TextView gsi;
        TextView xinzi;
        TextView address;
        TextView xueli;
        ImageView iv_tag;
    }
}
服务器返回数据

/**
 * TotalCount : 4
 * PageCount : 1
 * Data : [{"Status":[{"DeliveryStatus":"已投递","sort":"1","OperationTime":"2016/12/16"},{"DeliveryStatus":"被查看","sort":"2","OperationTime":"2016/12/16"}],"Resume_Info":null,"Salary":"1000以下","Degree":"学历不限","UserCode":"5840e95c84906307c8a6a033","WorkPlace":"1111","DeliveryTime_1":null,"Logo":"http://192.168.2.10:801/UploadFiles/20161118120621_3699.png","DeliveryTime":"2016-12-16T18:43:43.736+08:00","CompanyName":"河南分秒医配供应链管理有限公司","JopTitle":"11","DeliveryStatus":null,"JopCode":"584e8522548467055ca2ead5","_id":"58536c52548468089479371c","CompanyCode":"582d59ab84906317a0366b43","RecordStatus":0},{"Status":[{"DeliveryStatus":"已投递","sort":"1","OperationTime":"2016/12/16"},{"DeliveryStatus":"被查看","sort":"2","OperationTime":"2016/12/16"},{"DeliveryStatus":"有意向","sort":"3","OperationTime":"2016/12/16"},{"DeliveryStatus":"邀面试","sort":"4","OperationTime":"2016/12/16"},{"DeliveryStatus":"已接受","sort":"5","OperationTime":"2016/12/16"}],"Resume_Info":null,"Salary":"1000以下","Degree":"学历不限","UserCode":"5840e95c84906307c8a6a033","WorkPlace":"","DeliveryTime_1":null,"Logo":"http://192.168.2.10:801/UploadFiles/20161118120621_3699.png","DeliveryTime":"2016-12-16T18:43:43.736+08:00","CompanyName":"河南分秒医配供应链管理有限公司","JopTitle":"人事总监","DeliveryStatus":null,"JopCode":"584e83b0548467055ca2ead4","_id":"58538cbb5484670924b95b43","CompanyCode":"582d59ab84906317a0366b43","RecordStatus":0},{"Status":[{"DeliveryStatus":"已投递","sort":"1","OperationTime":"2016/12/16"}],"Resume_Info":null,"Salary":"8000-10000","Degree":"高中以下","UserCode":"5840e95c84906307c8a6a033","WorkPlace":"null","DeliveryTime_1":null,"Logo":"http://192.168.2.10:801/UploadFiles/20161118120621_3699.png","DeliveryTime":"2016-12-16T17:06:35+08:00","CompanyName":"河南分秒医配供应链管理有限公司","JopTitle":"财务管理","DeliveryStatus":"已投递","JopCode":"585367ce5484680894793714","_id":"5853ae9b54846809240d2708","CompanyCode":"582d59ab84906317a0366b43","RecordStatus":0},{"Status":[{"DeliveryStatus":"已投递","sort":"1","OperationTime":"2016/12/16"}],"Resume_Info":null,"Salary":"50000以上","Degree":"硕士","UserCode":"5840e95c84906307c8a6a033","WorkPlace":"","DeliveryTime_1":null,"Logo":"http://192.168.2.10:801/UploadFiles/20161118120621_3699.png","DeliveryTime":"2016-12-16T12:23:21.58+08:00","CompanyName":"河南分秒医配供应链管理有限公司","JopTitle":"产品UI设计师","DeliveryStatus":null,"JopCode":"584a601f84906319787f38c6","_id":"58536c39548468089479371a","CompanyCode":"582d59ab84906317a0366b43","RecordStatus":0}]
 * PageIndex : 1
 */

猜你喜欢

转载自blog.csdn.net/qq_30519365/article/details/53953962
今日推荐