多布局的自定义Adapter

//在开发过程中,多布局显示item是非常重要的,下面的代码是自定义的adapter显示垂直和水平布局下的item

public class MyAdapter extends BaseAdapter {
    private final List<AnimaDec.ResultBean.BookListBean> list;
    private final Context context;
//两种布局
 private int typeTotal=2;
//水平布局的索引
 private final int atype=0;
//垂直布局的索引
 private final int btype=1;

    public MyAdapter(Context context, List<AnimaDec.ResultBean.BookListBean> list) {
        this.context=context;
        this.list=list;
    }
    public void addlist(List<AnimaDec.ResultBean.BookListBean> list2){
        list.addAll(list2);
    }
//list数量
    @Override
    public int getCount() {
        return list.size();
    }

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

    @Override
    public long getItemId(int i) {
        return i;
    }
//布局类型
    @Override
    public int getItemViewType(int position) {
        AnimaDec.ResultBean.BookListBean bookListBean = list.get(position);
        String type = bookListBean.getArea();
        if(type.equals("国漫"))
        {
            return atype;
        }
        else
        {
            return btype;
        }

    }
//布局总数
    @Override
    public int getViewTypeCount() {
        return typeTotal;
    }
//自定义布局getView
    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
//优化自定义布局
 ViewHolder1 vh1=null;
        ViewHolder2 vh2=null;
//获得布局类型总数
 int type = getItemViewType(i);
        if(view==null) {
            switch (type) {
                case atype:
                    vh1 = new ViewHolder1();
                    view = View.inflate(context, R.layout.horizontal_item, null);
                    vh1.tv_title = view.findViewById(R.id.tv_title);
                    vh1.tv_kind = view.findViewById(R.id.tv_king);
                    vh1.iv_horizontal = view.findViewById(R.id.iv_horizontal);
                    view.setTag(vh1);
                    break;
                case btype:
                    vh2 = new ViewHolder2();
                    view = View.inflate(context, R.layout.vertical_item, null);
                    vh2.tv_title2 = view.findViewById(R.id.tv_title2);
                    vh2.tv_kind2 = view.findViewById(R.id.tv_king2);
                    vh2.iv_vertical = view.findViewById(R.id.iv_vertical);
                    view.setTag(vh2);
                    break;
            }
        }
        else
        {
            switch (type){
                case atype:
vh1= (ViewHolder1) view.getTag();
                    break;
                case btype:
                    vh2= (ViewHolder2) view.getTag();
                    break;

            }
        }
        //获得当前对象
        AnimaDec.ResultBean.BookListBean listBean = list.get(i);
        switch (type){
            case atype:
//修改文本内容
 vh1.tv_title.setText(listBean.getName());
                vh1.tv_kind.setText(listBean.getArea());
//使用ImageLoader加载布局(ImageLoader看文章列表有介绍)
 ImageLoader.getInstance().displayImage(listBean.getCoverImg(),vh1.iv_horizontal);
                break;
            case btype:
                vh2.tv_title2.setText(listBean.getName());
                vh2.tv_kind2.setText(listBean.getArea());
                ImageLoader.getInstance().displayImage(listBean.getCoverImg(),vh2.iv_vertical);
                break;

        }

        return view;
    }
//优化类
 class ViewHolder1{
        TextView tv_title;
        TextView tv_kind;
        ImageView iv_horizontal;
    }
    class ViewHolder2{
        TextView tv_title2;
        TextView tv_kind2;
        ImageView iv_vertical;
    }
}
//自定义布局需要注意:有几种布局就需要几个优化类。





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值