分类页面展示加联动

mainactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".di.activity.MainActivity">

 


    <com.hjm.bottomtabbar.BottomTabBar
        android:id="@+id/bottom_tab_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    </com.hjm.bottomtabbar.BottomTabBar>

 

 

</LinearLayout>

 

左边布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

 

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

 

 

 

        <TextView
            android:id="@+id/text3"
            android:layout_width="match_parent"
            android:layout_height="130dp"
            android:gravity="center"
            android:layout_marginLeft="40dp"
            android:layout_marginRight="20dp"
            android:textSize="25sp"
            android:textColor="#00ff00"
            android:text="123"/>

 

    </LinearLayout>


</LinearLayout>

 

 

右布局

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

 

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

 

        <ImageView
            android:id="@+id/img1"
            android:layout_width="130dp"
            android:layout_height="130dp"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:padding="15dp"
            android:src="@drawable/ic_launcher_background"/>

 

        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="30dp"
            android:text="123123123"/>

 

 

 

    </LinearLayout>

 

 

</LinearLayout>

 

动画布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:id="@+id/text_view"
        android:layout_width="100dp"
        android:layout_marginLeft="180dp"
        android:layout_alignParentLeft="true"
        android:gravity="center_horizontal"
        android:background="@drawable/iteamss"
        android:layout_height="100dp" />

</RelativeLayout>

 

 

Fragment布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout

 

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

 

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:divider="@drawable/iteamss"
        android:showDividers="middle"
        android:dividerPadding="1.5dp"
        android:layout_height="match_parent"/>

 

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv1"
        android:layout_width="0dp"
        android:layout_marginTop="10dp"
        android:divider="@drawable/iteamss"
        android:showDividers="middle"
        android:dividerPadding="1.5dp"
        android:layout_weight="2"
        android:layout_height="match_parent"/>

 

 

</LinearLayout>

 

OKHttp网络请求类

package com.bawie.study.di.util;

 

import android.os.Handler;

 

import java.io.IOException;
import java.text.Format;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

 

import javax.security.auth.callback.Callback;

 

import okhttp3.Call;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

 

public class Okhttpr {

 

    private static Okhttpr okhttpr = null;
    private final OkHttpClient okHttpClient;

 

    Handler handler = new Handler();

 


    public static Okhttpr getInstance(){

 

        if(okhttpr==null){
            synchronized (Okhttpr.class){
                if(okhttpr==null){
                    okhttpr = new Okhttpr();
                }

 

            }

 

        }
        return okhttpr;
    }

 

    private Okhttpr(){

 

 

 

        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();
    };

 

    /**
     * 调用doget方法
     */

 

    public void doGet(String url, final OkHttpCallBack okHttpCallBack){

 

        final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();

 

        Request request = new Request.Builder()
                .url(url)
                .build();
        okHttpClient.newCall(request).enqueue(new okhttp3.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, 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 okhttp3.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() {
                            callBack.Success(string);
                        }
                    });
                }
            }
        });

 

 

 


    }

 

 

}

 

OkHttp接口

package com.bawie.study.di.util;

 

public interface OkHttpCallBack {

 

    void Success(String result);
    void Error(String m);


}

 

所有接口

package com.bawie.study.di.caotart;

 

import com.bawie.study.data.presenter.MPresenter;
import com.bawie.study.di.util.OkHttpCallBack;

 

import java.util.HashMap;

 

public interface ICaotartInter {

 

    //p
    public  abstract class MPresenter{
        public abstract void CLeft(HashMap<String,String> params);
        public abstract void CRight(HashMap<String,String> params);
    }

 

    //v
    interface MView{
        void LeftSuccess(String result);
        void LeftError(String m);
        void RightSuccess(String result);
        void RightError(String m);
    }

 

    //m
    interface MModel{
        public abstract void CLeft(HashMap<String,String> params, OkHttpCallBack okHttpCallBack);
        public abstract void CRight(HashMap<String,String> params,OkHttpCallBack okHttpCallBack);
    }

 

 

}

 

Api接口

package com.bawie.study.di.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/findSecondCategory?firstCategoryId=";


}

 

model层

package com.bawie.study.data.model;

 

import android.os.Handler;
import android.os.Message;

 

import com.bawie.study.di.api.Api;
import com.bawie.study.di.caotart.ICaotartInter;
import com.bawie.study.di.util.OkHttpCallBack;
import com.bawie.study.di.util.Okhttpr;

 

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

 

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

 

public class MModel implements ICaotartInter.MModel {

 

    private String key;
    private String value;

 


    @Override
    public void CLeft(HashMap<String, String> params, final OkHttpCallBack okHttpCallBack) {
        Okhttpr.getInstance().doGet(Api.Left_API, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                okHttpCallBack.Success(result);
            }

 

            @Override
            public void Error(String m) {
                okHttpCallBack.Error(m);
            }
        });
    }

 

    @Override
    public void CRight(HashMap<String, String> params, final OkHttpCallBack okHttpCallBack) {

 

        for (Map.Entry<String, String> map: params.entrySet()) {
            key = map.getKey();
            value = map.getValue();
        }
        String s = Api.RIGHT_API + value;

 

        Okhttpr.getInstance().doGet(s, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                okHttpCallBack.Success(result);
            }

            @Override
            public void Error(String m) {
                okHttpCallBack.Error(m);
            }
        });
    }
}

 

presenter层

 

package com.bawie.study.data.presenter;

 

import com.bawie.study.data.model.MModel;
import com.bawie.study.di.caotart.ICaotartInter;
import com.bawie.study.di.util.OkHttpCallBack;

 

import java.util.HashMap;

 

public class MPresenter extends ICaotartInter.MPresenter {

 


    private ICaotartInter.MView mView;
    private MModel mModel;

 

    public MPresenter(ICaotartInter.MView mView) {
        this.mView = mView;
        mModel = new MModel();
    }

 


    @Override
    public void CLeft(HashMap<String, String> params) {

 

        mModel.CLeft(params, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                mView.LeftSuccess(result);
            }

 

            @Override
            public void Error(String m) {
                mView.LeftError(m);
            }
        });

 

    }

 

    @Override
    public void CRight(HashMap<String, String> params) {
        mModel.CRight(params, new OkHttpCallBack() {
            @Override
            public void Success(String result) {
                mView.RightSuccess(result);
            }

            @Override
            public void Error(String m) {
                mView.RightError(m);
            }
        });
    }
}

 

 

左边的adapter内容

 

package com.bawie.study.di.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.bawie.study.R;
import com.bawie.study.di.activity.MainActivity;
import com.bawie.study.di.bean.LeftBean;

 

import java.util.ArrayList;
import java.util.List;

 

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

 

    public Context context;
    public List<LeftBean.ResultBean> data;

 

    public MyAdapter(Context context) {
        this.context = context;
        data = new ArrayList<>();
    }

 

    public void setData(List<LeftBean.ResultBean> data) {
        this.data = data;
        notifyDataSetChanged();
    }

 

    @NonNull
    @Override
    public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

 

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.iteam1, null, false);
        MyViewHolder myViewHolder = new MyViewHolder(view);

 

        return myViewHolder;

 

    }

 

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {

 


        myViewHolder.text3.setText(data.get(i).name);

 

        myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onclicklisener!=null){
                    onclicklisener.click(data.get(i).id);
                }
            }
        });

 


    }

 

    @Override
    public int getItemCount() {
        return data.size();
    }

 

    public class MyViewHolder extends RecyclerView.ViewHolder{

 


        private final TextView text3;

 


        public MyViewHolder(@NonNull View itemView) {

 

            super(itemView);

 

          text3 = itemView.findViewById(R.id.text3);

 


        }
    }

 

    private onclicklisener onclicklisener;

 

    public void setOnclicklisener(MyAdapter.onclicklisener onclicklisener) {
        this.onclicklisener = onclicklisener;
    }

    public interface onclicklisener{
        void click(String cid);
    }
}

 

 

 

右边的adapter内容

 

package com.bawie.study.di.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.bawie.study.R;
import com.bawie.study.di.bean.RightBean;
import com.bumptech.glide.Glide;

 

import java.util.ArrayList;
import java.util.List;

 

public class MyAdapters extends RecyclerView.Adapter<MyAdapters.MyViewHolders> {

 

    public Context context;
    public List<RightBean.ResultBean> data;

 

    public MyAdapters(Context context) {
        this.context = context;
        data = new ArrayList<>();
    }

 

    public void setData(List<RightBean.ResultBean> data) {
        this.data = data;
        notifyDataSetChanged();
    }

 

    @NonNull
    @Override
    public MyAdapters.MyViewHolders onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

 

        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.iteam2, null, false);
        MyViewHolders myViewHolders = new MyViewHolders(view);

 

        return myViewHolders;

 

    }

 

    @Override
    public void onBindViewHolder(@NonNull MyAdapters.MyViewHolders myViewHolders, int i) {

 

        myViewHolders.text1.setText(data.get(i).name);
        Glide.with(context).load("http://365jia.cn/uploads/appletrecommend/201804/5ad6ba6c6bb8b.jpg").into(myViewHolders.img1);
    }

 

    @Override
    public int getItemCount() {
        return data.size();
    }

 

    public class MyViewHolders extends RecyclerView.ViewHolder{

 

        private final ImageView img1;
        private final TextView text1;

 


        public MyViewHolders(@NonNull View itemView) {

 

            super(itemView);

 

            img1 = itemView.findViewById(R.id.img1);
            text1 = itemView.findViewById(R.id.text1);

 

 

        }
    }
}

 

 

//左边的bean类

 

package com.bawie.study.di.bean;

 

import java.util.List;

 

public class LeftBean {

 

    public List<ResultBean> result;

 

    public static class ResultBean {

 

        public String id;
        public String name;

 


    }


}

 

 

 

//Fragment页面内容

 

package com.bawie.study.di.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.bawie.study.R;
import com.bawie.study.data.presenter.MPresenter;
import com.bawie.study.di.activity.MainActivity;
import com.bawie.study.di.adapter.MyAdapter;
import com.bawie.study.di.adapter.MyAdapters;
import com.bawie.study.di.bean.LeftBean;
import com.bawie.study.di.bean.RightBean;
import com.bawie.study.di.caotart.ICaotartInter;
import com.google.gson.Gson;

 

import java.util.HashMap;

 

public class FragmentOne extends Fragment implements ICaotartInter.MView,MyAdapter.onclicklisener{

 

    private RecyclerView rv;
    private MyAdapter myAdapter;
    private MyAdapters myAdapters;
    private RecyclerView rv1;
    private MPresenter mPresenter;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment1, container, false);

 

        rv = view.findViewById(R.id.rv);
        rv1 = view.findViewById(R.id.rv1);
        myAdapter = new MyAdapter(getActivity());
        myAdapters = new MyAdapters(getActivity());
        mPresenter = new MPresenter(this);

 

        rv.setLayoutManager(new LinearLayoutManager(getActivity()));
        rv1.setLayoutManager(new GridLayoutManager(getActivity(),3));
        mPresenter.CLeft(new HashMap<String, String>());

 

 

 

        return view;
    }

 

    private void getLeft(String cid) {
        HashMap<String,String> params = new HashMap<>();
        params.put("firstCategoryId",cid);
        mPresenter.CRight(params);
    }

 


    @Override
    public void LeftSuccess(String result) {
        LeftBean leftBean = new Gson().fromJson(result, LeftBean.class);
        myAdapter.setData(leftBean.result);
        myAdapter.setOnclicklisener(this);
        rv.setAdapter(myAdapter);
    }

 

    @Override
    public void LeftError(String m) {

 

    }

 

    @Override
    public void RightSuccess(String result) {
        RightBean rightBean = new Gson().fromJson(result, RightBean.class);
        myAdapters.setData(rightBean.result);
        rv1.setAdapter(myAdapters);
    }

 

    @Override
    public void RightError(String m) {

 

    }

    @Override
    public void click(String cid) {
        getLeft(cid);
    }
}

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值