//Api
package mmy.example.com.zklx3_2.api;
public class Api {
public static String Left = "http://172.17.8.100/small/commodity/v1/findFirstCategory";
public static String right= "http://172.17.8.100/small/commodity/v1/findCommodityByKeyword?page=1&count=10&keyword=";
}
//RightBean
package mmy.example.com.zklx3_2.bean;
import java.util.List;
public class RightBean {
private String message;
private String status;
private List<ResultBean> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<ResultBean> getResult() {
return result;
}
public void setResult(List<ResultBean> result) {
this.result = result;
}
public static class ResultBean {
private int commodityId;
private String commodityName;
private String masterPic;
private int price;
private int saleNum;
public int getCommodityId() {
return commodityId;
}
public void setCommodityId(int commodityId) {
this.commodityId = commodityId;
}
public String getCommodityName() {
return commodityName;
}
public void setCommodityName(String commodityName) {
this.commodityName = commodityName;
}
public String getMasterPic() {
return masterPic;
}
public void setMasterPic(String masterPic) {
this.masterPic = masterPic;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getSaleNum() {
return saleNum;
}
public void setSaleNum(int saleNum) {
this.saleNum = saleNum;
}
}
}
//
package mmy.example.com.zklx3_2.bean;
import java.util.List;
public class UserBean {
private String message;
private String status;
private List<ResultBean> result;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public List<ResultBean> getResult() {
return result;
}
public void setResult(List<ResultBean> result) {
this.result = result;
}
public static class ResultBean {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
//IClaContance
package mmy.example.com.zklx3_2.contance;
import java.util.HashMap;
import mmy.example.com.zklx3_2.model.ClaModel;
public interface IClaContance {
abstract class IClaPresenter{
public abstract void clalist(HashMap<String,String> params);
public abstract void claRightlist(HashMap<String,String>params);
}
interface IClaModel{
void clalist(HashMap<String,String>params, ClaModel.IClaModelCallBack callBack);
void claRightlist(HashMap<String,String>params, ClaModel.IClaModelCallBack callBack);
}
interface IClaView{
void success(String result);
void error(String msg);
void Rightsuccess(String result);
void Righterror(String msg);
}
}
//ShouyeActivity
package mmy.example.com.zklx3_2.fragment;
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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.google.gson.Gson;
import java.util.HashMap;
import mmy.example.com.zklx3_2.R;
import mmy.example.com.zklx3_2.adpter.MyAdapter;
import mmy.example.com.zklx3_2.adpter.RightAdapter;
import mmy.example.com.zklx3_2.bean.RightBean;
import mmy.example.com.zklx3_2.bean.UserBean;
import mmy.example.com.zklx3_2.contance.IClaContance;
import mmy.example.com.zklx3_2.presenter.ClaPresenter;
import mmy.example.com.zklx3_2.views.Views;
public class ShouyeActivity extends Fragment implements IClaContance.IClaView,MyAdapter.onclicklisener {
private RecyclerView mRightRv;
private RecyclerView mLeftRv;
private Button sao;
private Views ss;
private MyAdapter myAdapter;
private RightAdapter rightAdapter;
private ClaPresenter claPresenter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shouye, container, false);
sao = view.findViewById(R.id.sao);
ss = view.findViewById(R.id.ss);
mRightRv = view.findViewById(R.id.right_rv);
mLeftRv = view.findViewById(R.id.left_rv);
mLeftRv.setLayoutManager(new LinearLayoutManager(getActivity()));
mRightRv.setLayoutManager(new GridLayoutManager(getActivity(),2));
myAdapter = new MyAdapter(getActivity());
rightAdapter = new RightAdapter(getActivity());
claPresenter = new ClaPresenter(this);
claPresenter.clalist(new HashMap<String, String>());
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("a","鞋");
claPresenter.claRightlist(hashMap);
ss.sou.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = ss.edit.getText().toString();
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("a",s);
claPresenter.claRightlist(hashMap);
}
});
return view;
}
@Override
public void click(String cid) {
getLeft(cid);
}
@Override
public void success(String result) {
UserBean userBean = new Gson().fromJson(result,UserBean.class);
myAdapter.setList(userBean.getResult());
myAdapter.setOnclicklisener(this);
mLeftRv.setAdapter(myAdapter);
}
@Override
public void error(String msg) {
}
@Override
public void Rightsuccess(String result) {
RightBean rightBean = new Gson().fromJson(result,RightBean.class);
rightAdapter.setList(rightBean.getResult());
mRightRv.setAdapter(rightAdapter);
}
@Override
public void Righterror(String msg) {
}
private void getLeft(String cid){
HashMap<String,String>params=new HashMap<>();
params.put("a",cid);
claPresenter.claRightlist(params);
}
}
//ClaModel
package mmy.example.com.zklx3_2.model;
import java.util.HashMap;
import java.util.Map;
import mmy.example.com.zklx3_2.api.Api;
import mmy.example.com.zklx3_2.contance.IClaContance;
import mmy.example.com.zklx3_2.net.OkHttpCallBack;
import mmy.example.com.zklx3_2.net.OkHttpUtils;
public class ClaModel implements IClaContance.IClaModel {
private String key;
private String value;
@Override
public void clalist(HashMap<String, String> params, final IClaModelCallBack callBack) {
OkHttpUtils.getInstance().doGet(Api.Left, new OkHttpCallBack() {
@Override
public void success(String result) {
callBack.success(result);
}
@Override
public void error(String msg) {
callBack.error(msg);
}
});
}
@Override
public void claRightlist(HashMap<String, String> params, final IClaModelCallBack callBack) {
for (Map.Entry<String,String> map:params.entrySet()){
key = map.getKey();
value = map.getValue();
}
String s = Api.right + value;
OkHttpUtils.getInstance().doGet(s, new OkHttpCallBack() {
@Override
public void success(String result) {
callBack.success(result);
}
@Override
public void error(String msg) {
callBack.error(msg);
}
});
}
public interface IClaModelCallBack{
void success(String result);
void error(String msg);
}
}
//OkHttpCallBack
package mmy.example.com.zklx3_2.net;
public interface OkHttpCallBack {
void success(String result);
void error(String msg);
}
//OkHttpUtils
package mmy.example.com.zklx3_2.net;
import android.os.Handler;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OkHttpUtils {
private OkHttpClient okHttpClient;
private static OkHttpUtils mInatance;
private Handler handler= new Handler();
//单例模式
public static OkHttpUtils getInstance(){
if (mInatance == null){
synchronized (OkHttpUtils.class){
if (mInatance == null){
mInatance = new OkHttpUtils();
}
}
}
return mInatance;
}
//拦截器
private OkHttpUtils(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel((HttpLoggingInterceptor.Level.BODY));
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.writeTimeout(5,TimeUnit.SECONDS)
.build();
}
//doget
public void doGet(String url,final OkHttpCallBack callBack){
Request build = new Request.Builder().url(url).get().build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
callBack.error("网络异常");
}
});
}
@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() {
callBack.success(string);
}
});
}
}
});
}
}
//ClaPresenter
package mmy.example.com.zklx3_2.presenter;
import java.util.HashMap;
import mmy.example.com.zklx3_2.contance.IClaContance;
import mmy.example.com.zklx3_2.model.ClaModel;
public class ClaPresenter extends IClaContance.IClaPresenter {
private IClaContance.IClaView iClaView;
private ClaModel claModel;
public ClaPresenter(IClaContance.IClaView iClaView) {
this.iClaView = iClaView;
claModel = new ClaModel();
}
@Override
public void clalist(HashMap<String, String> params) {
claModel.clalist(params, new ClaModel.IClaModelCallBack() {
@Override
public void success(String result) {
iClaView.success(result);
}
@Override
public void error(String msg) {
iClaView.error(msg);
}
});
}
@Override
public void claRightlist(HashMap<String, String> params) {
claModel.claRightlist(params, new ClaModel.IClaModelCallBack() {
@Override
public void success(String result) {
iClaView.Rightsuccess(result);
}
@Override
public void error(String msg) {
iClaView.Righterror(msg);
}
});
}
}
//Views
package mmy.example.com.zklx3_2.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import mmy.example.com.zklx3_2.R;
public class Views extends LinearLayout {
public Button sao;
public EditText edit;
public Button sou;
public Views(Context context) {
super(context);
}
public Views(Context context, AttributeSet attrs) {
super(context, attrs);
View view = LayoutInflater.from(context).inflate(R.layout.line,this);
sao = view.findViewById(R.id.sao);
edit = view.findViewById(R.id.edit);
sou = view.findViewById(R.id.sou);
}
public Views(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
//MainActivity
package mmy.example.com.zklx3_2;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.hjm.bottomtabbar.BottomTabBar;
import mmy.example.com.zklx3_2.fragment.ShouyeActivity;
import mmy.example.com.zklx3_2.fragment.XiaoyeActivity;
import mmy.example.com.zklx3_2.fragment.XingActivity;
public class MainActivity extends AppCompatActivity {
private BottomTabBar bottomTabBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bottomTabBar = findViewById(R.id.bottomTabBar);
bottomTabBar.init(getSupportFragmentManager())
.setImgSize(50,60)
.setFontSize(8)
.setTabPadding(4,6,10)
.setChangeColor(Color.RED,Color.BLUE)
.addTabItem("首页",R.drawable.message_false,ShouyeActivity.class)
.addTabItem("分类",R.drawable.start_false,XingActivity.class)
.addTabItem("我的",R.drawable.see_false,XiaoyeActivity.class);
}
}
//main_activity
<?xml version="1.0" encoding="utf-8"?><com.hjm.bottomtabbar.BottomTabBar
android:id="@+id/bottomTabBar"
android:layout_width="match_parent"
android:layout_height="match_parent">
</com.hjm.bottomtabbar.BottomTabBar>
//shou
<?xml version="1.0" encoding="utf-8"?><mmy.example.com.zklx3_2.views.Views
android:id="@+id/ss"
android:layout_width="match_parent"
android:layout_height="wrap_content"></mmy.example.com.zklx3_2.views.Views>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:background="#ccc"
android:id="@+id/left_rv"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/right_rv"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout>
//line
<?xml version="1.0" encoding="utf-8"?><Button
android:id="@+id/sao"
android:text="扫一扫"
android:layout_width="50dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/edit"
android:layout_weight="3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="请输入搜索内容"/>
<Button
android:id="@+id/sou"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="搜索"/>
//left
<?xml version="1.0" encoding="utf-8"?><TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/title"
android:lines="1"
android:maxLength="4"
android:textSize="24sp"
android:paddingTop="15dp"
android:paddingBottom="15dp"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"/>
//right
<?xml version="1.0" encoding="utf-8"?>