implementation 'com.android.support:recyclerview-v7:28.+'
///契约类简化接口
package com.example.zk_week3.controns;
import com.example.zk_week3.util.OkHttpCallBack;
import java.util.HashMap;
public interface IContronsClass {
interface MainModel{
void Lefts(HashMap params, OkHttpCallBack okHttpCallBack);
void Rights(HashMap params, OkHttpCallBack okHttpCallBack);
}
interface MainView{
void Success(String result);
void Error(String msg);
void RightSuccess(String result);
void RightError(String msg);
}
public abstract class MainPresenter{
public abstract void getLeft(HashMap params);
public abstract void getRight(HashMap params);
}
}
///model层
package com.example.zk_week3.model;
import android.util.Log;
import com.example.zk_week3.api.Api;
import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.util.OkHttpCallBack;
import com.example.zk_week3.util.OkHttps;
import java.util.HashMap;
import java.util.Map;
public class MainModel implements IContronsClass.MainModel {
private String key;
private String value;
@Override
public void Lefts(HashMap params, final OkHttpCallBack okHttpCallBack) {
OkHttps.getInstance().doGet(Api.Left_API, new OkHttpCallBack() {
@Override
public void Success(String result) {
okHttpCallBack.Success(result);
}
@Override
public void Error(String msg) {
okHttpCallBack.Error(msg);
}
});
}
@Override
public void Rights(HashMap params, final OkHttpCallBack okHttpCallBack) {
for (Map.Entrymap:params.entrySet()){
key = map.getKey();
value = map.getValue();
}
String s = Api.Right_API + value;
OkHttps.getInstance().doGet(s, new OkHttpCallBack() {
@Override
public void Success(String result) {
okHttpCallBack.Success(result);
}
@Override
public void Error(String msg) {
okHttpCallBack.Success(msg);
}
});
}
}
///presenter层的实现
package com.example.zk_week3.presenter;
import android.util.Log;
import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.model.MainModel;
import com.example.zk_week3.util.OkHttpCallBack;
import java.util.HashMap;
public class MainPresenter extends IContronsClass.MainPresenter {
private final MainModel mainModel;
private final IContronsClass.MainView mainView;
public MainPresenter(IContronsClass.MainView mainView){
mainModel = new MainModel();
this.mainView = mainView;
}
@Override
public void getLeft(HashMap params) {
mainModel.Lefts(params, new OkHttpCallBack() {
@Override
public void Success(String result) {
mainView.Success(result);
}
@Override
public void Error(String msg) {
mainView.Error(msg);
}
});
}
@Override
public void getRight(HashMap params) {
mainModel.Rights(params, new OkHttpCallBack() {
@Override
public void Success(String result) {
mainView.RightSuccess(result);
}
@Override
public void Error(String msg) {
mainView.RightError(msg);
}
});
}
}
package com.example.zk_week3.util;
import android.os.Handler;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public class OkHttps {
private static OkHttps okHttps = null;
private static OkHttpClient okHttpClient;
Handler handler = new Handler();
private OkHttps(){
};
public static OkHttps getInstance(){
if(okHttps==null){
synchronized (OkHttps.class){
if(okHttps==null){
okHttps = new OkHttps();
}
}
}
return okHttps;
}
public void doGet(String url, final OkHttpCallBack okHttpCallBack){
OkHttpClient okHttpClient = new OkHttpClient.Builder().build();
final Request request = new Request.Builder()
.url(url)
.get()
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.code()==200){
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
okHttpCallBack.Success(string);
}
});
}
}
});
}
public void doPost(String url, HashMapparams,final OkHttpCallBack callBack){
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entrymap:params.entrySet()){
builder.add(map.getKey(),map.getValue());
}
RequestBody requestBody = builder.build();
Request request = new Request.Builder()
.url(url)
.post(requestBody)
.build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if(response.code()==200){
final String s = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.Success(s);
}
});
}
}
});
}
}
package com.example.zk_week3.api;
public class Api {
public static final String Left_API = "http://172.17.8.100/small/commodity/v1/findFirstCategory";
public static final String Right_API = "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=";
}
package com.example.zk_week3.util;
public interface OkHttpCallBack {
void Success(String result);
void Error(String msg);
}
package com.example.zk_week3.frag;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.zk_week3.R;
import com.example.zk_week3.adapter.LeftAdapter;
import com.example.zk_week3.adapter.RightAdapter;
import com.example.zk_week3.bean.LeftBean;
import com.example.zk_week3.bean.RightBean;
import com.example.zk_week3.controns.IContronsClass;
import com.example.zk_week3.presenter.MainPresenter;
import com.example.zk_week3.view.MyView;
import com.google.gson.Gson;
import com.jwkj.libzxing.OnQRCodeScanCallback;
import com.jwkj.libzxing.QRCodeManager;
import com.nex3z.flowlayout.FlowLayout;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class Frag1 extends Fragment implements IContronsClass.MainView ,LeftAdapter.onclickListenr{
private Button sou;
private EditText ed_sou;
private RecyclerView rv;
private RecyclerView rv1;
private MainPresenter mainPresenter;
List list = new ArrayList<>();
List lists = new ArrayList<>();
private LeftAdapter leftAdapter;
private RightAdapter rightAdapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag1,container,false);
rv = view.findViewById(R.id.rv);
rv1 = view.findViewById(R.id.rv1);
vies.sou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(vies.ed_sou.getText().length()==0){
Toast.makeText(getActivity(),"请输入输入的内容",Toast.LENGTH_SHORT).show();
}else{
string = vies.ed_sou.getText().toString();
HashMap hashMap = new HashMap<>();
hashMap.put("keyword", string);
mainPresenter.getRight(hashMap);
}
}
});
mainPresenter = new MainPresenter(this);
leftAdapter = new LeftAdapter(getActivity(), list);
rightAdapter = new RightAdapter(getActivity(), lists);
mainPresenter.getLeft(new HashMap());
leftAdapter.setOnclickListenr(this);
HashMap hashMap = new HashMap<>();
hashMap.put("keyword","鞋");
mainPresenter.getRight(hashMap);
rv.setLayoutManager(new LinearLayoutManager(getActivity()));
rv1.setLayoutManager(new GridLayoutManager(getActivity(),2));
return view;
}
private void getLeft(String cd) {
HashMap params = new HashMap<>();
params.put("first",cd);
mainPresenter.getRight(params);
}
@Override
public void Success(String result) {
LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
leftAdapter.setList(leftBean.result);
leftAdapter.setOnclickListenr(this);
rv.setAdapter(leftAdapter);
}
@Override
public void Error(String msg) {
}
@Override
public void RightSuccess(String result) {
RightBean rightBean = new Gson().fromJson(result, RightBean.class);
rightAdapter.setLists(rightBean.result);
rv1.setAdapter(rightAdapter);
}
@Override
public void RightError(String msg) {
}
@Override
public void onClick(String cd) {
getLeft(cd);
}
}
///实现左边功能
package com.example.zk_week3.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.zk_week3.R;
import com.example.zk_week3.bean.LeftBean;
import java.util.ArrayList;
import java.util.List;
public class LeftAdapter extends RecyclerView.Adapter {
Context context;
public List list;
public LeftAdapter(Context context, List list) {
this.context = context;
list = new ArrayList<>();
}
public void setContext(Context context) {
this.context = context;
notifyDataSetChanged();
}
public void setList(List list) {
this.list = list;
}
@NonNull
@Override
public LeftAdapter.myView onCreateViewHolder(@NonNull ViewGroup viewGroup,final int i) {
View view = View.inflate(context,R.layout.iteam,null);
myView myView = new myView(view);
return myView;
}
@Override
public void onBindViewHolder(@NonNull LeftAdapter.myView myView, final int i) {
myView.textView.setText(list.get(i).name);
myView.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(OnclickListenr!=null){
OnclickListenr.onClick(list.get(i).name.substring(0,2));
}
}
});
}
@Override
public int getItemCount() {
return list.size();
}
public class myView extends RecyclerView.ViewHolder{
private TextView textView;
public myView(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
}
}
public onclickListenr OnclickListenr;
public void setOnclickListenr(onclickListenr onclickListenr) {
OnclickListenr = onclickListenr;
}
public interface onclickListenr{
void onClick(String cd);
}
}
///实现右边展示
package com.example.zk_week3.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.zk_week3.R;
import com.example.zk_week3.bean.LeftBean;
import com.example.zk_week3.bean.RightBean;
import java.util.ArrayList;
import java.util.List;
public class RightAdapter extends RecyclerView.Adapter {
public Context context;
public List lists;
public RightAdapter(Context context, List lists) {
this.context = context;
lists = new ArrayList<>();
}
public void setContext(Context context) {
this.context = context;
notifyDataSetChanged();
}
public void setLists(List lists) {
this.lists = lists;
}
@NonNull
@Override
public RightAdapter.myView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context,R.layout.iteams,null);
myView myView = new myView(view);
return myView;
}
@Override
public void onBindViewHolder(@NonNull RightAdapter.myView myView, int i) {
Glide.with(context).load(lists.get(i).getMasterPic()).into(myView.img);
myView.textView1.setText(lists.get(i).getCommodityName());
Log.e("tag",""+lists.get(i).getCommodityName());
}
@Override
public int getItemCount() {
return lists.size();
}
public class myView extends RecyclerView.ViewHolder{
private TextView textView1;
private ImageView img;
public myView(@NonNull View itemView) {
super(itemView);
textView1 = itemView.findViewById(R.id.textView1);
img = itemView.findViewById(R.id.img);
}
}
}