bravh

《普通布局》:


1.依赖
//project(build.gradle)中配置:


allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
    }
}
//module(build.gradle)中配置:


  implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
  implementation'com.android.support:recyclerview-v7:27.1.1'


2.xml  
  recyclerView


3.bean类


4.layout_item   外层布局高度一定是包裹自身


5.适配器
   public class MyAdapter extends BaseQuickAdapter<Bean, BaseViewHolder> {
    public MyAdapter(int layoutResId, @Nullable List<Bean> data) {
        super(layoutResId, data);
    }


    @Override
    protected void convert(BaseViewHolder helper, Bean item) {
        helper.setText(R.id.mText, item.getText());
        helper.setImageResource(R.id.mImg, item.getImg());
        // 加载网络图片
        //Glide.with(mContext).load(item.getImg()).crossFade().into((ImageView) helper.getView(R.id.mImg));
    }
   }


6.activity


 //初始化数据:
 for (int i = 0; i <10 ; i++) {
            list.add(new Bean("111111111111111111",R.mipmap.ic_launcher));


        }
//设置布局管理器  适配器
        LinearLayoutManager manager = new LinearLayoutManager(this);
        mRecy.setLayoutManager(manager);
        MyAdapter myAdapter = new MyAdapter(R.layout.layout_bean_item, list);
        mRecy.setAdapter(myAdapter);
        
//点击事件  长按  短按
        myAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {


            }
        });
        myAdapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {


                return true;
            }
        });






《多布局》:
1。
   public interface APIService {
    @GET("test/duobuju2.txt")
    Observable<DuoBean> getData();
   }
2.实体类


 //实体类必须实现MultiItemEntity,在设置数据的时候,需要给每一个数据设置itemType




  public static class DataBean implements MultiItemEntity {
        public static final int TEXT = 1;
        public static final int IMG = 2;
        private int itemType;


        public DataBean(int itemType) {
            this.itemType = itemType;
        }


        @Override
        public int getItemType() {
//多布局判断可写在此位置
//            if (thumbnail_pic_s!=null&&thumbnail_pic_s02==null&&thumbnail_pic_s03==null){
//                return IMG1;
//            }else if (thumbnail_pic_s!=null&&thumbnail_pic_s02!=null&&thumbnail_pic_s03==null){
//                return IMG2;
//            }else if (thumbnail_pic_s!=null&&thumbnail_pic_s02!=null&&thumbnail_pic_s03!=null){
//                return IMG3;
//            }
            return itemType;
        }


3.适配器


public class MyDuoAdapter extends BaseMultiItemQuickAdapter<DuoBean.DataBean, BaseViewHolder> {
    /**
     * Same as QuickAdapter#QuickAdapter(Context,int) but with
     * some initialization data.
     *
     * @param data A new list is created out of this one to avoid mutable list
     */
    public MyDuoAdapter(List<DuoBean.DataBean> data) {
        super(data);
        addItemType(DuoBean.DataBean.IMG1, R.layout.layout_duo_item1);
        addItemType(DuoBean.DataBean.IMG2, R.layout.layout_duo_item2);
        addItemType(DuoBean.DataBean.IMG3, R.layout.layout_duo_item3);
    }
    @Override
    protected void convert(BaseViewHolder helper, DuoBean.DataBean item) {
        switch (helper.getItemViewType()) {
            case DuoBean.DataBean.IMG1:
                helper.setText(R.id.mTitle1,item.getTitle());
                Glide.with(mContext).load(item.getThumbnail_pic_s()).crossFade().into((ImageView) helper.getView(R.id.mImg1));
                break;
            case DuoBean.DataBean.IMG2:
                helper.setText(R.id.mTitle2,item.getTitle());
                Glide.with(mContext).load(item.getThumbnail_pic_s()).crossFade().into((ImageView) helper.getView(R.id.mImg21));
                Glide.with(mContext).load(item.getThumbnail_pic_s02()).crossFade().into((ImageView) helper.getView(R.id.mImg22));
                break;
            case DuoBean.DataBean.IMG3:
                helper.setText(R.id.mTitle3,item.getTitle());
                Glide.with(mContext).load(item.getThumbnail_pic_s()).crossFade().into((ImageView) helper.getView(R.id.mImg31));
                Glide.with(mContext).load(item.getThumbnail_pic_s02()).crossFade().into((ImageView) helper.getView(R.id.mImg32));
                Glide.with(mContext).load(item.getThumbnail_pic_s03()).crossFade().into((ImageView) helper.getView(R.id.mImg33));
                break;
        }
    }
}




4.代码


 private RecyclerView mRecyclerView;
    private List<DuoBean.DataBean> list=new ArrayList<>();
    private MyDuoAdapter myDuoAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2_duo_item);
        initView();
        initData();
    }


    private void initData() {
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://172.16.54.17:8080/")
                .addConverterFactory(GsonConverterFactory.create(new Gson()))
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        retrofit.create(APIService.class)
                .getData()
                .subscribeOn(Schedulers.io())
//                .repeat()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<DuoBean>() {
                    @Override
                    public void onCompleted() {


                    }
                    @Override
                    public void onError(Throwable e) {
                        Log.d("Main2DuoItemActivity", "e:" + e);
                    }
                    @Override
                    public void onNext(DuoBean duoBean) {
                        List<DuoBean.DataBean> data = duoBean.getData();
                        for (int i = 0; i < data.size(); i++) {
                            DuoBean.DataBean dataBean = data.get(i);


//多布局 判断条目 而非图片数量
//                            switch (i%3){
//                               case 0:
//                                   dataBean.setItemType(DuoBean.DataBean.IMG1);
//                                   break;
//                                case 1:
//                                    dataBean.setItemType(DuoBean.DataBean.IMG2);
//                                    break;
//                                case 2:
//                                    dataBean.setItemType(DuoBean.DataBean.IMG3);
//                                    break;


                            //    }


                            
//方法一判断多布局
                            if(dataBean.getThumbnail_pic_s()!=null){
                                if(dataBean.getThumbnail_pic_s02()!=null){
                                    if(dataBean.getThumbnail_pic_s03()!=null){
                                        dataBean.setItemType(DuoBean.DataBean.IMG3);
                                        continue;
                                    }
                                    dataBean.setItemType(DuoBean.DataBean.IMG2);
                                    continue;
                                }
                                dataBean.setItemType(DuoBean.DataBean.IMG1);




                            }
                           
 //方法二判断多布局
//                        if (dataBean.getThumbnail_pic_s()!=null&&dataBean.getThumbnail_pic_s02()==null&&dataBean.getThumbnail_pic_s03()==null){
//                            dataBean.setItemType(DuoBean.DataBean.IMG1);
//                        }else if (dataBean.getThumbnail_pic_s()!=null&&dataBean.getThumbnail_pic_s02()!=null&&dataBean.getThumbnail_pic_s03()==null){
//                            dataBean.setItemType(DuoBean.DataBean.IMG2);
//                        }else if (dataBean.getThumbnail_pic_s()!=null&&dataBean.getThumbnail_pic_s02()!=null&&dataBean.getThumbnail_pic_s03()!=null){
//                            dataBean.setItemType(DuoBean.DataBean.IMG3);
//                        }
                        }


                       list.addAll(data);
                        Log.e("=================",list.toString());
                        myDuoAdapter.notifyDataSetChanged();




                    }
                });


    }


    private void initView() {
        mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);
        LinearLayoutManager manager = new LinearLayoutManager(Main2DuoItemActivity.this);
        mRecyclerView.setLayoutManager(manager);
        myDuoAdapter = new MyDuoAdapter(list);
        mRecyclerView.setAdapter(myDuoAdapter);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值