BaseRecyclerViewAdapterHelperマルチレイアウト実装
4958 ワード
BaseRecyclerViewAdapterHelper自体はすでに私たちのためにマルチレイアウトをパッケージ化しています.私たちはいくつかのクラスのパッケージを作るだけです.
1.まず、私が作ったプロジェクトエンティティクラスを例に、エンティティクラスを用意する必要があります.
2.MultiItemEntityクラスを使用してMyMultipleitemメソッドを作成し、MultiItemEntityクラスを継承する必要があります.
注;複数の異なるレイアウトで宣言されたID
3.データを解析し、リストにデータを入れる
これでマルチレイアウトのロードが完了しました.BaseRecyclerViewAdapterHelperの公式リファレンスドキュメント:https://www.jianshu.com/p/b343fcff51b0
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