分类展示--recyclerView

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

扫描二维码关注公众号,回复: 5734825 查看本文章
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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42634876/article/details/88093651
今日推荐