leftAdapter
package com.example.three01.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.three01.R;
import com.example.three01.bean.LeftBean;
import java.util.ArrayList;
import java.util.List;
public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.LeftViewHolder> {
private Context context;
private List<LeftBean.ResultBean> data;
public LeftAdapter(Context context) {
this.context = context;
data = new ArrayList<>();
}
public void setData(List<LeftBean.ResultBean> data){
this.data = data;
notifyDataSetChanged();
}
@NonNull
@Override
public LeftAdapter.LeftViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item0, null, false);
LeftViewHolder leftViewHolder = new LeftViewHolder(view);
return leftViewHolder;
}
@Override
public void onBindViewHolder(@NonNull LeftAdapter.LeftViewHolder leftViewHolder, final int i) {
leftViewHolder.mText1.setText(data.get(i).name);
leftViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(onClickListener!=null){
onClickListener.click(data.get(i).id);
//onclicklistener.click(data.get(i).name.substring(0,2));
}
}
});
}
@Override
public int getItemCount() {
return data.size();
}
public class LeftViewHolder extends RecyclerView.ViewHolder {
private final TextView mText1;
public LeftViewHolder(@NonNull View itemView) {
super(itemView);
mText1 = itemView.findViewById(R.id.mText1);
}
}
private onclicklisener onClickListener;
public void setOnclicklistener(LeftAdapter.onclicklisener onClickListener){
this.onClickListener = onClickListener;
}
public interface onclicklisener{
void click(String cid);
}
}
rightAdapter
package com.example.three01.adapter;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.three01.R;
import com.example.three01.bean.RightBean;
import java.util.ArrayList;
import java.util.List;
public class RightAdapter extends RecyclerView.Adapter<RightAdapter.RightViewHolder> {
private Context context;
private List<RightBean.ResultBean> data;
public RightAdapter(Context context) {
this.context = context;
data = new ArrayList<>();
}
public void setData(List<RightBean.ResultBean> data){
this.data = data;
notifyDataSetChanged();
}
@NonNull
@Override
public RightAdapter.RightViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item1, null, false);
RightViewHolder rightViewHolder = new RightViewHolder(view);
return rightViewHolder;
}
@Override
public void onBindViewHolder(@NonNull RightAdapter.RightViewHolder rightViewHolder, int i) {
rightViewHolder.text1.setText(data.get(i).getName());
Glide.with(context).load("http://365jia.cn/uploads/appletrecommend/201804/5ad6ba6c6bb8b.jpg").into(rightViewHolder.img1);
}
@Override
public int getItemCount() {
return data.size();
}
public class RightViewHolder extends RecyclerView.ViewHolder {
private final ImageView img1;
private final TextView text1;
public RightViewHolder(@NonNull View itemView) {
super(itemView);
img1 = itemView.findViewById(R.id.img1);
text1 = itemView.findViewById(R.id.text1);
}
}
}
API
package com.example.three01.api;
public class API {
//用get方式请求
//左侧
public final static String LEFT_API="http://172.17.8.100/small/commodity/v1/findFirstCategory";
//右侧
public final static String RIGHT_API="http://172.17.8.100/small/commodity/v1/findSecondCategory?firstCategoryId=";
}
契约类
package com.example.three01.contract;
import com.example.three01.util.RequestCallBack;
import java.util.HashMap;
public interface LoadContract {
//model
interface LloadModel{
public void LeftModel (HashMap<String,String>map, RequestCallBack callBack);
public void RightModel (HashMap<String,String> map, RequestCallBack callBack);
}
//presenter
public abstract class LloadPresenter{
public abstract void LeftPresenter(HashMap<String,String> map);
public abstract void Rightpresenter(HashMap<String,String> map);
}
//view
interface LloadView{
void LeftOnSuccess(String result);
void leftOnFailUre(String msg);
void RightOnSuccess(String result);
void RightOnFailUre(String msg);
}
}
主页面
package com.example.three01.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 com.example.three01.R;
import com.example.three01.adapter.LeftAdapter;
import com.example.three01.adapter.RightAdapter;
import com.example.three01.bean.LeftBean;
import com.example.three01.bean.RightBean;
import com.example.three01.contract.LoadContract;
import com.example.three01.presenter.ClassPresenter;
import com.google.gson.Gson;
import java.util.HashMap;
public class FenLeiFragment extends Fragment implements LoadContract.LloadView,LeftAdapter.onclicklisener {
private RecyclerView leftRlv;
private RecyclerView rightRlv;
private LeftAdapter leftAdapter;
private RightAdapter rightAdapter;
private ClassPresenter classPresenter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fenlei, container, false);
leftRlv = view.findViewById(R.id.leftRlv);
rightRlv = view.findViewById(R.id.rightRlv);
leftAdapter = new LeftAdapter(getActivity());
rightAdapter = new RightAdapter(getActivity());
classPresenter = new ClassPresenter(this);
leftRlv.setLayoutManager(new LinearLayoutManager(getActivity()));
rightRlv.setLayoutManager(new GridLayoutManager(getActivity(),3));
classPresenter.LeftPresenter(new HashMap<String, String>());
/*HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("keyword","鞋");
mainPresenter.RightPresenter(hashMap);*/
return view;
}
private void getLeft(String cid){
HashMap<String, String> params = new HashMap<>();
params.put("firstCategoryId",cid);
classPresenter.Rightpresenter(params);
}
@Override
public void click(String cid) {
getLeft(cid);
}
@Override
public void LeftOnSuccess(String result) {
LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
leftAdapter.setData(leftBean.result);
leftAdapter.setOnclicklistener(this);
leftRlv.setAdapter(leftAdapter);
}
@Override
public void leftOnFailUre(String msg) {
}
@Override
public void RightOnSuccess(String result) {
RightBean rightBean = new Gson().fromJson(result, RightBean.class);
rightAdapter.setData(rightBean.getResult());
rightRlv.setAdapter(rightAdapter);
}
@Override
public void RightOnFailUre(String msg) {
}
}
model
package com.example.three01.model;
import com.example.three01.api.API;
import com.example.three01.contract.LoadContract;
import com.example.three01.util.OkHttpCallBack;
import com.example.three01.util.OkHttpUtils;
import com.example.three01.util.RequestCallBack;
import java.util.HashMap;
import java.util.Map;
public class ClassModel implements LoadContract.LloadModel {
private String key;
private String value;
@Override
public void LeftModel(HashMap<String, String> map, final RequestCallBack callBack) {
OkHttpUtils.getInstance().doGet(API.LEFT_API, new OkHttpCallBack() {
@Override
public void Success(String result) {
callBack.Success(result);
}
@Override
public void Failure(String msg) {
callBack.Failure(msg);
}
});
}
@Override
public void RightModel(HashMap<String, String> map, final RequestCallBack callBack) {
for(Map.Entry<String,String> maps:map.entrySet()){
key = maps.getKey();
value = maps.getValue();
}
String s = API.RIGHT_API + value;
OkHttpUtils.getInstance().doGet(s, new OkHttpCallBack() {
@Override
public void Success(String result) {
callBack.Success(result);
}
@Override
public void Failure(String msg) {
callBack.Failure(msg);
}
});
}
}
presenter
package com.example.three01.presenter;
import com.example.three01.contract.LoadContract;
import com.example.three01.model.ClassModel;
import com.example.three01.util.RequestCallBack;
import java.util.HashMap;
public class ClassPresenter extends LoadContract.LloadPresenter {
private LoadContract.LloadView lloadView;
private final ClassModel classModel;
public ClassPresenter(LoadContract.LloadView lloadView) {
this.lloadView = lloadView;
classModel = new ClassModel();
}
@Override
public void LeftPresenter(HashMap<String, String> map) {
classModel.LeftModel(map, new RequestCallBack() {
@Override
public void Success(String result) {
lloadView.LeftOnSuccess(result);
}
@Override
public void Failure(String msg) {
lloadView.leftOnFailUre(msg);
}
});
}
@Override
public void Rightpresenter(HashMap<String, String> map) {
classModel.RightModel(map, new RequestCallBack() {
@Override
public void Success(String result) {
lloadView.RightOnSuccess(result);
}
@Override
public void Failure(String msg) {
lloadView.RightOnFailUre(msg);
}
});
}
}
okhttp接口
package com.example.three01.util;
public interface OkHttpCallBack {
void Success(String result);
void Failure(String msg);
}
okhttp类
package com.example.three01.util;
import android.os.Handler;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OkHttpUtils {
private static OkHttpUtils mInstance;
private final OkHttpClient okHttpClient;
private Handler handler = new Handler();
//单例模式
public static OkHttpUtils getInstance() {
if (mInstance==null){
synchronized (OkHttpUtils.class){
if (mInstance==null){
mInstance = new OkHttpUtils();
}
}
}
return mInstance;
}
private OkHttpUtils(){
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
.writeTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.build();
}
public void doGet(String url, final OkHttpCallBack okHttpCallback){
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() {
okHttpCallback.Failure("网络异常");
}
});
}
@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, HashMap<String,String> params, final OkHttpCallBack callBack){
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String,String> map: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) {
if (callBack!=null){
handler.post(new Runnable() {
@Override
public void run() {
callBack.Failure("网络请求失败");
}
});
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (callBack!=null){
if (response.code()==200){
final String result = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
callBack.Success(result);
}
});
}
}
}
});
}
}
responce接口
package com.example.three01.util;
public interface RequestCallBack {
void Success(String result);
void Failure(String msg);
}
bottonTABBar
package com.example.three01;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.example.three01.fragment.FaXianFragment;
import com.example.three01.fragment.FenLeiFragment;
import com.example.three01.fragment.GouWuCheFragment;
import com.example.three01.fragment.ShouYeFragment;
import com.example.three01.fragment.WoDeFragment;
import com.hjm.bottomtabbar.BottomTabBar;
import com.umeng.socialize.UMShareAPI;
public class MainActivity extends AppCompatActivity {
private BottomTabBar mBtb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtb = findViewById(R.id.mBtb);
mBtb.init(getSupportFragmentManager())
.setImgSize(50,50)
.setFontSize(8)
.setTabPadding(4,6,10)
.setChangeColor(Color.BLACK,Color.RED)
.addTabItem("首页",R.drawable.common_tab_btn_home_n_hdpi,ShouYeFragment.class)
.addTabItem("分类",R.drawable.start_false,FenLeiFragment.class)
.addTabItem("发现",R.drawable.see_false,FaXianFragment.class)
.addTabItem("购物车",R.drawable.ic_action_name_car,GouWuCheFragment.class)
.addTabItem("我的",R.drawable.people_flase,WoDeFragment.class);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(MainActivity.this).onActivityResult(requestCode, resultCode, data);
}
}