多条目展示

来源:互联网 发布:全景制作软件 编辑:程序博客网 时间:2024/06/05 19:12



适配器

public class MyAdapter extends BaseAdapter {

    private int TYPE_1 = 0;
    private int TYPE_2 = 1;
    private int TYPE_3 = 2;

    Context context;
    List<String> datas;

    public MyAdapter(Context context, List<String> datas) {
        this.context = context;
        this.datas = datas;
    }

    @Override
    public int getCount() {
        //进行判空处理
        return datas != null ? datas.size() : 0;
    }

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        ViewHolder holder;
        int type = getItemViewType(position);
        if (convertView == null) {
            holder = new ViewHolder();
            switch (type) {
                case 0:
                    convertView = View.inflate(context, R.layout.item1, null);
                    holder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
                    holder.cb = (CheckBox) convertView.findViewById(R.id.cb);
                    break;
                case 1:
                    convertView = View.inflate(context, R.layout.item2, null);
                    holder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
                    break;
                case 2:
                    convertView = View.inflate(context, R.layout.item3, null);
                    holder.tv1 = (TextView) convertView.findViewById(R.id.tv1);
                    holder.iv = (ImageView) convertView.findViewById(R.id.iv);
                    break;
            }
            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }
        holder.tv1.setText(Integer.toString(position));
        switch (type) {
            case 0:
                holder.cb.setChecked(true);
                break;
            case 1:
                break;
            case 2:
                holder.iv.setImageResource(R.mipmap.vip);
                break;
        }

        return convertView;
    }

    //获取view类型的个数 长度从0开始
    @Override
    public int getViewTypeCount() {
        return 3;
    }

    //获取item类型
    @Override
    public int getItemViewType(int position) {
        //每6个一循环

        int p = position % 6;
        if (p == 0) {
            return TYPE_1;
        } else if (p <3) {
            return TYPE_2;
        } else if (p < 6) {
            return TYPE_3;
        } else {
            return TYPE_1;
        }


    }

    private class ViewHolder {
        private TextView tv1;
        private CheckBox cb;
        private ImageView iv;
    }
}

原创粉丝点击