分类列表

##分类布局


<android.support.v7.widget.RecyclerView
android:id="@+id/rc1"
android:layout_width=“0dp”
android:layout_weight=“3”
android:layout_height=“match_parent”></android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/rc2"
android:layout_width=“0dp”
android:layout_weight=“7”
android:layout_height=“match_parent”></android.support.v7.widget.RecyclerView>

##契约类

public interface ClaContract {
abstract class ClaPresenter{
public abstract void getLeftlist(HashMap<String,String> map);
public abstract void getRightlist(HashMap<String,String> map);
}
public interface IClaModel{
void getLeftlist(HashMap<String,String> map, ClaModelCallback claModelCallback);
void getRightlist(HashMap<String,String> map, ClaModelCallback claModelCallback);
}
public interface IClaView{
void leftSuccess(LeftBean leftBean);
void rightSuccess(RightBean rightBean);
void leftFail(String error);
void rightFail(String error);
}
}

##model

public class ClaModel implements ClaContract.IClaModel {

@Override
public void getLeftlist(HashMap<String, String> map, final ClaModelCallback claModelCallback) {
    OkhttpUtils.getInstance().Get(UserApi.Left_API, new OkhttpCallback() {
        @Override
        public void onFailok(String msg) {
            if (claModelCallback!=null) {
                claModelCallback.leftFailure("请求错误");
            }
        }

        @Override
        public void onSuccessok(String result) {
            if (claModelCallback!=null){
                claModelCallback.leftSuccess(result);
            }
        }
    });
}

@Override
public void getRightlist(HashMap<String, String> map, final ClaModelCallback claModelCallback) {
    OkhttpUtils.getInstance().Post(UserApi.RIGHT_API, map, new OkhttpCallback() {
        @Override
        public void onFailok(String msg) {
            if (claModelCallback!=null) {
                claModelCallback.leftFailure("请求错误");
            }
        }

        @Override
        public void onSuccessok(String result) {
            if (claModelCallback!=null){
                claModelCallback.leftSuccess(result);
            }
        }
    });
}

}

##presenter

public class ClaPersenter extends ClaContract.ClaPresenter {
private ClaModel claModel;
private ClaContract.IClaView iClaView;

public ClaPersenter(ClaContract.IClaView iClaView) {
    this.claModel = new ClaModel();
    this.iClaView = iClaView;
}

@Override
public void getLeftlist(HashMap<String, String> map) {
    claModel.getLeftlist(map, new ClaModelCallback() {
        @Override
        public void leftSuccess(String result) {
            LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
            //List<LeftBean.LeftData> data = leftBean.data;
            iClaView.leftSuccess(leftBean);
        }

        @Override
        public void rightSUccess(String result) {

        }

        @Override
        public void leftFailure(String error) {

        }

        @Override
        public void rightFailure(String error) {

        }
    });
}

@Override
public void getRightlist(HashMap<String, String> map) {
    claModel.getRightlist(map, new ClaModelCallback() {
        @Override
        public void leftSuccess(String result) {
            RightBean rightBean = new Gson().fromJson(result, RightBean.class);
           /* List<RightBean.RightData> data = rightBean.data;*/
            iClaView.rightSuccess(rightBean);
        }

        @Override
        public void rightSUccess(String result) {

        }

        @Override
        public void leftFailure(String error) {

        }

        @Override
        public void rightFailure(String error) {

        }
    });
}

##ok接口

public interface OkhttpCallback {
void onFailok(String msg);
void onSuccessok(String result);
}

##分类接口

public interface ClaModelCallback {
void leftSuccess(String result);
void rightSUccess(String result);
void leftFailure(String error);
void rightFailure(String error);
}

##okutil

public class OkhttpUtils {
Handler handler = new Handler();
private static OkhttpUtils instance;
private final OkHttpClient okHttpClient;

private OkhttpUtils() {
    //拦截器
    HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
    httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    okHttpClient = new OkHttpClient.Builder()
            .addInterceptor(httpLoggingInterceptor)
            .writeTimeout(5,TimeUnit.SECONDS)
            .connectTimeout(5,TimeUnit.SECONDS)
            .readTimeout(5,TimeUnit.SECONDS)
            .build();
}
public void Post(String url , HashMap<String,String> map, final OkhttpCallback callback){
    FormBody.Builder formBody = new FormBody.Builder();
    for (Map.Entry<String, String> p : map.entrySet()) {
        formBody.add(p.getKey(),p.getValue());
    }
    Request request = new Request.Builder()
            .url(url)
            .post(formBody.build())
            .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            if (callback!=null) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onFailok("网络异常");
                    }
                });

            }
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();
            if (callback!=null) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onSuccessok(string);
                    }
                });

            }
        }
    });
}
public void Get(String url, final OkhttpCallback callback){
    Request request = new Request.Builder()
            .url(url)
            .get()
            .build();
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            if (callback!=null) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onFailok("网络异常");
                    }
                });
            }
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();
            if (callback!=null) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.onSuccessok(string);
                    }
                });
            }
        }
    });
}
public static OkhttpUtils getInstance(){
    if (instance==null){
        synchronized (OkhttpUtils.class){
            if (instance==null){
                instance = new OkhttpUtils();
            }
        }
    }
    return instance;
}
/**
 * 取消所有请求,好处:节省开销:内存开销,cpu的开销(线程开销)
 */
public void cancel(){

    if (okHttpClient!=null){
        okHttpClient.dispatcher().cancelAll();
    }
}

}

##left adapter

public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftViewHolder> {
private Context context;
private List<LeftBean.LeftData> list;

public LeftAdapter(Context context, List<LeftBean.LeftData> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public LeftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View inflate = LayoutInflater.from(context).inflate(R.layout.left_layout, viewGroup, false);
    LeftViewHolder leftViewHolder = new LeftViewHolder(inflate);
    return leftViewHolder;
}

@Override
public void onBindViewHolder(@NonNull LeftViewHolder leftViewHolder, int i) {
    final LeftBean.LeftData leftData = list.get(i);
    leftViewHolder.name.setText(leftData.name);
    leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (itemclickCallback!=null){
                itemclickCallback.click(leftData.cid);
                Log.e("11",leftData.cid+"");
            }
        }
    });
}

@Override
public int getItemCount() {
    return list==null?0:list.size();
}

class LeftViewHolder extends RecyclerView.ViewHolder{
    TextView name;
    public LeftViewHolder(@NonNull View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.name);
    }
}
private ItemclickCallback itemclickCallback;

public void setItemclickCallback(ItemclickCallback itemclickCallback) {
    this.itemclickCallback = itemclickCallback;
}

public interface ItemclickCallback{
    void click(String cid1);
}

}

##right item adapter

public class RightitemAdapter extends RecyclerView.Adapter<RightitemAdapter.RightViewHolder> {
private Context context;
private List<RightBean.RightData.RightList> list;

public RightitemAdapter(Context context, List<RightBean.RightData.RightList> list) {
    this.context = context;
    this.list = list;
}

@NonNull
@Override
public RightViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View inflate = LayoutInflater.from(context).inflate(R.layout.right_item_layout, viewGroup, false);
    RightViewHolder rightViewHolder = new RightViewHolder(inflate);
    return rightViewHolder;
}

@Override
public void onBindViewHolder(@NonNull RightViewHolder rightViewHolder, int i) {
    RightBean.RightData.RightList rightData = list.get(i);
    rightViewHolder.name.setText(rightData.name);
    Glide.with(context).load(rightData.icon).into(rightViewHolder.img);

}

@Override
public int getItemCount() {
    return list==null?0:list.size();
}

class RightViewHolder extends RecyclerView.ViewHolder{
    TextView name;
    ImageView img;
    public RightViewHolder(@NonNull View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.name);
        img = itemView.findViewById(R.id.img);
    }
}

}

##分类fragment

public class ClaFragment extends Fragment implements ClaContract.IClaView,LeftAdapter.ItemclickCallback{
@BindView(R.id.rc1)
RecyclerView rc1;
@BindView(R.id.rc2)
RecyclerView rc2;
private ClaPersenter claPersenter;
private String cid = “1”;
private LeftAdapter leftAdapter;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.cla_fragment, container, false);
    ButterKnife.bind(this,view);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    initData();
}


private void initData() {
    rc1.setLayoutManager(new LinearLayoutManager(getActivity()));
    rc2.setLayoutManager(new LinearLayoutManager(getActivity()));
    claPersenter = new ClaPersenter(this);
    claPersenter.getLeftlist(new HashMap<String,String>());
    getRight();
}

private void getRight() {
    HashMap<String,String> map = new HashMap<>();
    map.put("cid",cid);
    Log.e("right",cid+"");
    claPersenter.getRightlist(map);
}

@Override
public void leftSuccess(LeftBean leftBean) {
        if (leftAdapter==null) {
            leftAdapter = new LeftAdapter(getActivity(), leftBean.data);
            rc1.setAdapter(leftAdapter);
            leftAdapter.setItemclickCallback(this);
        }else {
            leftAdapter.notifyDataSetChanged();
        }

}

@Override
public void rightSuccess(RightBean rightBean) {
    RightAdapter rightAdapter = new RightAdapter(getActivity(),rightBean.data);
    rc2.setAdapter(rightAdapter);
}

@Override
public void leftFail(String error) {
    Toast.makeText(getActivity(),"left请求错误",Toast.LENGTH_SHORT).show();
}

@Override
public void rightFail(String error) {
    Toast.makeText(getActivity(),"right请求错误",Toast.LENGTH_SHORT).show();
}

/**
 * 左边的点击事件
 */


@Override
public void click(String cid1) {
    cid = cid1;
    getRight();
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值