BaseRecyclerViewAdapterHelperマルチレイアウト実装

4958 ワード

BaseRecyclerViewAdapterHelper自体はすでに私たちのためにマルチレイアウトをパッケージ化しています.私たちはいくつかのクラスのパッケージを作るだけです.
1.まず、私が作ったプロジェクトエンティティクラスを例に、エンティティクラスを用意する必要があります.
public class GHnovideoFamenBean  {

    private String position;
    private String funDescription;
    private String id;
    private String devTypeNo;
    private String controllerName;
    private String buttonType;
    private String maxAlarmValue;
  




    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getFunDescription() {
        return funDescription;
    }

    public void setFunDescription(String funDescription) {
        this.funDescription = funDescription;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDevTypeNo() {
        return devTypeNo;
    }

    public void setDevTypeNo(String devTypeNo) {
        this.devTypeNo = devTypeNo;
    }

    public String getControllerName() {
        return controllerName;
    }

    public void setControllerName(String controllerName) {
        this.controllerName = controllerName;
    }

    public String getButtonType() {
        return buttonType;
    }

    public void setButtonType(String buttonType) {
        this.buttonType = buttonType;
    }

    public String getMaxAlarmValue() {
        return maxAlarmValue;
    }

    public void setMaxAlarmValue(String maxAlarmValue) {
        this.maxAlarmValue = maxAlarmValue;
    }

 
}


2.MultiItemEntityクラスを使用してMyMultipleitemメソッドを作成し、MultiItemEntityクラスを継承する必要があります.
public class MyMultipleitem implements MultiItemEntity {
    public static final int TYPE_THREE = 1;
    public static final int TYPE_TWO = 2;
    private int itemType;
    private GHnovideoFamenBean data;
    public MyMultipleitem(int itemType, GHnovideoFamenBean data) {
        this.itemType = itemType;
        this.data = data;
    }
    @Override
    public int getItemType() {
        return itemType;
    }
    public GHnovideoFamenBean getData(){
        return data;
    }
}

注;複数の異なるレイアウトで宣言されたID
3.データを解析し、リストにデータを入れる
   APIRetrofit.getAPIService().get(Constants.Base_URL + "ivy/Device/getOutputDevice" +
                "?entityId=" + entityId + "&groupId=" + groupId + "")
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(ResponseBody responseBody) {
                        try {
                            String res = responseBody.string();
                            Informtion informtion = new Gson().fromJson(res, Informtion.class);
                            int status = informtion.getStatus();
                            String data = informtion.getData();
                                List gHnovideoFamenBeans = new Gson().fromJson(data,
                                        new TypeToken>() {
                                        }.getType());
                                ArrayList list=new ArrayList<>();
                                for (GHnovideoFamenBean gHnovideoFamenBean : gHnovideoFamenBeans) {
                                    //                
                                    if (gHnovideoFamenBean.getDevTypeNo().equals("1") || gHnovideoFamenBean.getDevTypeNo().equals("9")) {
                                        list.add(new MyMultipleitem(MyMultipleitem.TYPE_THREE,gHnovideoFamenBean));

                                    } else if (gHnovideoFamenBean.getButtonType().equals("2") || gHnovideoFamenBean.getDevTypeNo().equals("13")) {
                                        list.add(new MyMultipleitem(MyMultipleitem.TYPE_TWO,gHnovideoFamenBean));

                                    }
                                }

                                ghcontroltwoAdapter=new GhcontroltwoAdapter(list);
                                recyclerView.setAdapter(ghcontroltwoAdapter);

                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }

                    @Override
                    public void onError(Throwable e) {
                    }

                    @Override
                    public void onComplete() {
                    }
                });

これでマルチレイアウトのロードが完了しました.BaseRecyclerViewAdapterHelperの公式リファレンスドキュメント:https://www.jianshu.com/p/b343fcff51b0