public class ClsFragment extends Fragment implements ClsContract.IclsView,LeftAdapter.ItemClickListener{
private RecyclerView rv_left;
private RecyclerView rv_right;
private ClsPresenter clsPresenter;
private LeftAdapter leftAdapter;
private RightAdapter rightAdapter;
private String cid = "1";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_cls, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
rv_left = view.findViewById(R.id.rv_left);
rv_right = view.findViewById(R.id.rv_right);
initData();
}
private void initData() {
rv_left.setLayoutManager(new LinearLayoutManager(getActivity()));
rv_right.setLayoutManager(new LinearLayoutManager(getActivity()));
clsPresenter = new ClsPresenter(this);
getleft(cid);
clsPresenter.getLeftList(new HashMap<String, String>());
}
private void getleft(String cid) {
HashMap<String,String> parmas = new HashMap<>();
parmas.put("cid",cid);
clsPresenter.getRightList(parmas);
}
@Override
public void leftSuccess(List<LeftClsBean.Cls> leftClsBeanList) {
if (leftAdapter==null){
leftAdapter = new LeftAdapter(leftClsBeanList,getActivity());
rv_left.setAdapter(leftAdapter);
leftAdapter.setItemClickListener(this);
}else {
leftAdapter.notifyDataSetChanged();
}
}
@Override
public void rightSuccess(List<RightClsBean.DataBean> rightClsBeanList) {
rightAdapter = new RightAdapter(rightClsBeanList,getActivity());
rv_right.setAdapter(rightAdapter);
}
@Override
public void leftfailure(String error)
}
@Override
public void rightfailure(String error) {
}
@Override
public void click(String cid) {
getleft(cid);
}
}
public interface ClsContract {
public abstract class ClsPresenters{
public abstract void getLeftList(HashMap<String,String> params);
public abstract void getRightList(HashMap<String,String> params);
}
public interface IClsModel{
void getLeftList(HashMap<String,String> params, ClsModel.ClsModelCallback clsModelCallback);
void getRightList(HashMap<String,String> params, ClsModel.ClsModelCallback clsModelCallback);
}
public interface IclsView{
void leftSuccess(List<LeftClsBean.Cls> leftClsBeanList);
void rightSuccess(List<RightClsBean.DataBean> rightClsBeanList);
void leftfailure(String error);
void rightfailure(String error);
}
}
public class ClsPresenter extends ClsContract.ClsPresenters {
private ClsModel clsModel;
private ClsContract.IclsView iclsView;
public ClsPresenter(ClsContract.IclsView iclsView) {
this.iclsView = iclsView;
this.clsModel = new ClsModel();
}
@Override
public void getLeftList(HashMap<String, String> params) {
clsModel.getLeftList(params, new ClsModel.ClsModelCallback() {
@Override
public void leftsuccess(String result) {
LeftClsBean leftClsBean = new Gson().fromJson(result,LeftClsBean.class);
List<LeftClsBean.Cls> data = leftClsBean.data;
iclsView.leftSuccess(data);
}
});
}
@Override
public void getRightList(HashMap<String, String> params) {
clsModel.getRightList(params, new ClsModel.ClsModelCallback() {
@Override
public void leftsuccess(String result) {
}
@Override
public void rightsuccess(String result) {
RightClsBean rightClsBean = new Gson().fromJson(result,RightClsBean.class);
List<RightClsBean.DataBean> data = rightClsBean.data;
iclsView.rightSuccess(data);
}
});
}
}
public class ClsModel implements ClsContract.IClsModel {
@Override
public void getLeftList(HashMap<String, String> params, final ClsModelCallback clsModelCallback) {
OkhttpUtils.getInstance().doPost(ClsApi.LEFT_API, params, new OkHttpCallback() {
@Override
public void Success(String result) {
if (clsModelCallback!=null){
clsModelCallback.leftsuccess(result);
}
}
@Override
public void Failure(String msg) {
if (clsModelCallback!=null){
clsModelCallback.leftfailure(msg);
}
}
});
}
@Override
public void getRightList(HashMap<String, String> params, final ClsModelCallback clsModelCallback) {
OkhttpUtils.getInstance().doPost(ClsApi.RIGHT_API, params, new OkHttpCallback() {
@Override
public void Success(String result) {
if (clsModelCallback!=null){
clsModelCallback.rightsuccess(result);
}
}
@Override
public void Failure(String msg) {
if (clsModelCallback!=null){
clsModelCallback.rightfailure(msg);
}
}
});
}
public interface ClsModelCallback{
void leftsuccess(String result);
void rightsuccess(String result);
void leftfailure(String error);
void rightfailure(String error);
}
}
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.leftViewHolder>{
private List<LeftClsBean.Cls> list;
private Context context;
public LeftAdapter(List<LeftClsBean.Cls> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public leftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.left_layout_item,viewGroup,false);
leftViewHolder leftViewHolder = new leftViewHolder(view);
return leftViewHolder;
}
@Override
public void onBindViewHolder(@NonNull leftViewHolder leftViewHolder, int i) {
final LeftClsBean.Cls cls = list.get(i);
leftViewHolder.tv_name.setText(cls.name);
leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (itemClickListener!=null){
itemClickListener.click(cls.cid);
}
}
});
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
class leftViewHolder extends RecyclerView.ViewHolder {
private final TextView tv_name;
public leftViewHolder(@NonNull View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_name);
}
}
private ItemClickListener itemClickListener;
public void setItemClickListener(ItemClickListener itemClickListener){
this.itemClickListener = itemClickListener;
}
public interface ItemClickListener{
void click(String cid);
}
}
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.rightViewHodler>{
private List<RightClsBean.DataBean> list;
private Context context;
public RightAdapter(List<RightClsBean.DataBean> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public rightViewHodler onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.right_layout_item,viewGroup,false);
rightViewHodler rightViewHodler = new rightViewHodler(view);
return rightViewHodler;
}
@Override
public void onBindViewHolder(@NonNull rightViewHodler rightViewHodler, int i) {
RightClsBean.DataBean dataBean = list.get(i);
List<RightClsBean.DataBean.ListBean> list = dataBean.list;
rightViewHodler.tv_name.setText(dataBean.name);
rightViewHodler.recyclerView.setLayoutManager(new GridLayoutManager(context,3));
rightViewHodler.recyclerView.setAdapter(new RightItemAdapter(context,list));
}
@Override
public int getItemCount() {
return list==null?0:list.size();
}
class rightViewHodler extends RecyclerView.ViewHolder{
private final TextView tv_name;
private final RecyclerView recyclerView;
public rightViewHodler(@NonNull View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_name);
recyclerView = itemView.findViewById(R.id.rv);
}
}
}
public class RightItemAdapter extends RecyclerView.Adapter<RightItemAdapter.rightitemViewHolder>{
private Context context;
private List<RightClsBean.DataBean.ListBean> listBeans;
public RightItemAdapter(Context context, List<RightClsBean.DataBean.ListBean> listBeans) {
this.context = context;
this.listBeans = listBeans;
}
@NonNull
@Override
public rightitemViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(context).inflate(R.layout.rightitem_layout_item,viewGroup,false);
rightitemViewHolder rightitemViewHolder = new rightitemViewHolder(view);
return rightitemViewHolder;
}
@Override
public void onBindViewHolder(@NonNull rightitemViewHolder rightitemViewHolder, int i) {
RightClsBean.DataBean.ListBean listBean = listBeans.get(i);
rightitemViewHolder.tv_name.setText(listBean.name);
Glide.with(context).load(listBean.icon).into(rightitemViewHolder.imageView);
}
@Override
public int getItemCount() {
return listBeans==null?0:listBeans.size();
}
class rightitemViewHolder extends RecyclerView.ViewHolder {
private final TextView tv_name;
private final ImageView imageView;
public rightitemViewHolder(@NonNull View itemView) {
super(itemView);
tv_name = itemView.findViewById(R.id.tv_name);
imageView = itemView.findViewById(R.id.iv);
}
}
}