购物-分类

SecondActivity.java

public class SecondActivity extends AppCompatActivity{
    private ViewPager mPager;
    private RadioGroup mRadioGroup;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second);

         mPager = findViewById(R.id.pager);
         mRadioGroup = findViewById(R.id.group);

         mPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
             @Override
             public Fragment getItem(int position) {
                 Fragment fragment=null;

                 switch (position){
                     case 0:
                         fragment = new Afrag();
                         break;
                     case 1:
                         fragment = new Bfrag();
                         break;
                     case 2:
                         fragment = new Cfrag();
                         break;
                 }
                 return fragment;
             }

             @Override
             public int getCount() {
                 return 3;
             }
         });

         mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(RadioGroup radioGroup, int i) {
                 switch (i){
                     case R.id.r1:
                         mPager.setCurrentItem(0);
                         break;
                     case R.id.r2:
                         mPager.setCurrentItem(1);
                         break;
                     case R.id.r3:
                         mPager.setCurrentItem(2);
                         break;
                 }
             }
         });
    }
}

secondActivity.xml

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

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="13"/>

    <RadioGroup
        android:id="@+id/group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/r1"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:button="@null"
            android:gravity="center"
            android:text="首页"/>

        <RadioButton
            android:id="@+id/r2"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:button="@null"
            android:gravity="center"
            android:text="分类"/>

        <RadioButton
            android:id="@+id/r3"
            android:layout_width="wrap_content"
            android:layout_weight="1"
            android:layout_height="match_parent"
            android:button="@null"
            android:gravity="center"
            android:text="购物车"/>
    </RadioGroup>
</LinearLayout>

Afrag.java

public class Afrag extends Fragment{
    private RecyclerView mRecyclerView;
    public String urlString="http://www.wanandroid.com/tools/mockapi/6523/restaurants_offset_0_limit_4 ";

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.afrag, null);
        mRecyclerView = view.findViewById(R.id.rv);
       initData();

        return view;
    }

    private void initData() {
        OkHttps okHttps = OkHttps.getInstance();

        okHttps.doGet(urlString, new OkHttps.OkCallback() {
            @Override
            public void onResponse(String json) {  //瀑布流

                PubuBean pubuBean = new Gson().fromJson(json,PubuBean.class);
                List<PubuBean.DataBean> results = pubuBean.getData();

                PubuAdapter pubuAdapter = new PubuAdapter(getActivity());
                pubuAdapter.setDatas(results);
                mRecyclerView.setAdapter(pubuAdapter);

                StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
                mRecyclerView.setLayoutManager(manager);
            }

            @Override
            public void onFailure(Exception e) {

            }
        });

    }
}

afrag.xml

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

PubuAdapter.java

public class PubuAdapter extends RecyclerView.Adapter<PubuAdapter.ViewHolder>{
    private Context mContext;
    ArrayList<PubuBean.DataBean> list;

    public PubuAdapter(Context context) {
        mContext = context;
        list = new ArrayList<>();
    }

    public void setDatas(List<PubuBean.DataBean> datas) {
       list.addAll(datas);

    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(mContext, R.layout.pbitem, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {

        holder.mTextView.setText(list.get(position).getName());
        Glide.with(mContext).load(list.get(position).getPic_url()).into(holder.mImageView);


    }

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



    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView mImageView;
        TextView mTextView;
        public ViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.image);
            mTextView = itemView.findViewById(R.id.t1);

        }
    }
}

Bfrag.java

public class Bfrag extends Fragment{
    private RecyclerView mRecyclerView;
    LeftAdapter adapter;
    String urlString="http://www.zhaoapi.cn/product/getCatagory";
    String urlString2="http://www.zhaoapi.cn/product/getProductCatagory";
    private RecyclerView mRecyclerView2;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.bfrag, null);//分类页面

        mRecyclerView = view.findViewById(R.id.rv1);  //左侧列表

        mRecyclerView2 = view.findViewById(R.id.rv2);  //右
        initData();

        return view;
    }

    private void initData() {
        OkHttps okHttps = OkHttps.getInstance();

        okHttps.doGet(urlString, new OkHttps.OkCallback() {
            @Override
            public void onResponse(String json) {  //瀑布流

                LeftBean leftBean = new Gson().fromJson(json,LeftBean.class);
                List<LeftBean.DataBean> results = leftBean.getData();

                adapter = new LeftAdapter(getActivity());
                adapter.setDatas(results);

                mRecyclerView.setAdapter(adapter);


                mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));

                adapter.setOnItemClickListener(new LeftAdapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {

                        //Toast.makeText(getActivity(),position+"",Toast.LENGTH_SHORT).show();
                        rigth(position);
                    }
                });
            }

            @Override
            public void onFailure(Exception e) {

            }
        });
    }

    public void rigth(int position){
        HashMap<String, String> map = new HashMap<>();
        map.put("cid",position+1+"");

        OkHttps.getInstance().doPost(urlString2,map,new OkHttps.OkCallback() {
            @Override
            public void onResponse(String json) {

                RightBean rightBean = new Gson().fromJson(json,RightBean.class);
                List<RightBean.DataBean> results = rightBean.getData();

                RightAdapter rightAdapter = new RightAdapter(getActivity());
                rightAdapter.setDatas(results);

                mRecyclerView2.setAdapter(rightAdapter);

                mRecyclerView2.setLayoutManager(new GridLayoutManager(getActivity(),3));
            }

            @Override
            public void onFailure(Exception e) {

            }
        });
    }
}

bfrag.xml

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv1"
        android:layout_width="0dp"
        android:layout_weight="2"
        android:layout_height="match_parent"/>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rv2"
        android:layout_width="0dp"
        android:layout_weight="10"
        android:layout_height="match_parent"/>

</LinearLayout>

LeftAdapter.java

public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.ViewHolder>{
    private Context mContext;
    ArrayList<LeftBean.DataBean> list;

    public LeftAdapter(Context context) {
        mContext = context;
        list = new ArrayList<>();
    }

    public void setDatas(List<LeftBean.DataBean> datas) {
       list.addAll(datas);

    }

    public interface OnItemClickListener{   //自定义接口回调设置点击事件
        void onItemClick(int position);
    }

    private OnItemClickListener mOnItemClickListener;

    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        mOnItemClickListener=onItemClickListener;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(mContext, R.layout.leftitem, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

        holder.mTextView.setText(list.get(position).getName());

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int position1 = holder.getLayoutPosition();
                mOnItemClickListener.onItemClick(position1);
            }
        });
    }

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



    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView mTextView;
        public ViewHolder(View itemView) {
            super(itemView);
            mTextView = itemView.findViewById(R.id.text1);

        }
    }
}

RightAdapter.java

public class RightAdapter extends RecyclerView.Adapter<RightAdapter.ViewHolder>{
    private Context mContext;
    ArrayList<RightBean.DataBean> list;

    public RightAdapter(Context context) {
        mContext = context;
        list = new ArrayList<>();
    }

    public void setDatas(List<RightBean.DataBean> datas) {
       list.addAll(datas);

    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(mContext, R.layout.rightitem, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.mTextView.setText(list.get(position).getName());
        Glide.with(mContext).load(list.get(position).getList().get(position).getIcon()).into(holder.mImageView);
    }

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



    public class ViewHolder extends RecyclerView.ViewHolder {
        ImageView mImageView;
        TextView mTextView;

        public ViewHolder(View itemView) {
            super(itemView);
            mImageView = itemView.findViewById(R.id.image1);
            mTextView = itemView.findViewById(R.id.text2);

        }
    }
}

OkHttps.java

public class OkHttps {
    Handler handler;
    private final OkHttpClient mOkHttpClient;
    private static OkHttps mOkHttps;

    private OkHttps() {
        handler = new Handler(Looper.getMainLooper());

        LoggingInterceptor loggingInterceptor = new LoggingInterceptor();  //日志拦截器
        mOkHttpClient = new OkHttpClient.Builder()
                .addInterceptor(loggingInterceptor)   //设置日志拦截器
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .readTimeout(5000,TimeUnit.MILLISECONDS)
                .writeTimeout(5000,TimeUnit.MILLISECONDS)
                .build();

    }

    public static OkHttps getInstance(){
        if (mOkHttps==null){
            synchronized (OkHttps.class){
                if (mOkHttps==null){
                    return mOkHttps=new OkHttps();
                }
            }
        }
        return mOkHttps;
    }

    public interface OkCallback{
        void onResponse(String json);

        void onFailure(Exception e);

    }

    public void doPost(String url, Map<String,String> map, final OkCallback okCallback){
        FormBody.Builder builder = new FormBody.Builder();
        if (map!=null){
            for (String key:map.keySet()){
                builder.add(key,map.get(key));
            }
        }

        FormBody formBody = builder.build();

        final Request request = new Request.Builder()
                .post(formBody)
                .url(url)
                .build();

        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                if (okCallback!=null){
                    handler.post(new Runnable() {
                        @Override
                        public void run() {

                            okCallback.onFailure(e);
                        }
                    });
                }
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                try {
                    if (response!=null && response.isSuccessful()){
                        final String json = response.body().string();
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                if (okCallback!=null){

                                    okCallback.onResponse(json);
                                    return;
                                }
                            }
                        });
                    }
                }catch (IOException e){
                    e.printStackTrace();
                }
                if (okCallback!=null){
                    okCallback.onFailure(new Exception("网络异常"));
                }
            }
        });

    }
    public void doGet(String url, final OkCallback okCallback){
        Request request = new Request.Builder()
                .url(url)
                .build();

        Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                if (okCallback != null) {
                    //切换到主线程
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            okCallback.onFailure(e);
                        }
                    });
                }
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                try {
                    if (response != null && response.isSuccessful()) {
                        final String json = response.body().string();
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                if (okCallback != null) {
                                    okCallback.onResponse(json);
                                }

                            }
                        });
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

依赖

implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.squareup.okhttp3:okhttp:3.12.0'
    implementation 'com.android.support:recyclerview-v7:27.1.1'
    implementation 'com.github.bumptech.glide:glide:3.7.0'

LoggingInterceptor.java //拦截器

class LoggingInterceptor implements Interceptor {
  @Override
  public Response intercept(Chain chain) throws IOException {
    //拿到Request对象
    Request request = chain.request();

    long t1 = System.nanoTime();
    System.out.println(" request  = " + String.format("Sending request %s on %s%n%s",
            request.url(), chain.connection(), request.headers()));

    //拿到Response对象
    Response response = chain.proceed(request);

    long t2 = System.nanoTime();
    //得出请求网络,到得到结果,中间消耗了多长时间
    System.out.println("response  " + String.format("Received response for %s in %.1fms%n%s",
            response.request().url(), (t2 - t1) / 1e6d, response.headers()));
    return response;
  }
}

Adapter

public class RightAdapter extends BaseExpandableListAdapter{

    private Context mContext;
    private List<RightBean.DataBean> list;

    public RightAdapter(Context context, List<RightBean.DataBean> list) {
        mContext = context;
        this.list = list;
    }

    @Override
    public int getGroupCount() {
        return list.size();
    }

    @Override
    public int getChildrenCount(int i) {
        return list.get(i).getList().size();
    }

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        GroupViewHolder groupViewHolder;
        if (view==null){

            groupViewHolder = new GroupViewHolder();
            view = View.inflate(viewGroup.getContext(), R.layout.item_right_group, null);
            groupViewHolder.mTextView = view.findViewById(R.id.item_right_text);
            view.setTag(groupViewHolder);
        }else {
            groupViewHolder = (GroupViewHolder) view.getTag();
        }

        groupViewHolder.mTextView.setText(list.get(i).getName());
        return view;
    }

    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {

        ChildViewHolder childViewHolder;
        if (view==null){

            childViewHolder = new ChildViewHolder();
            view = View.inflate(viewGroup.getContext(), R.layout.item_right_child, null);
            childViewHolder.mTextView = view.findViewById(R.id.item_right_child_text);
            childViewHolder.mImageView = view.findViewById(R.id.item_right_child_img);
            view.setTag(childViewHolder);
        }else {
            childViewHolder = (ChildViewHolder) view.getTag();
        }

        RightBean.DataBean dataBean = list.get(i);
        List<RightBean.DataBean.ListBean> list1 = dataBean.getList();

        childViewHolder.mTextView.setText(list1.get(i1).getName());
        Glide.with(mContext).load(list1.get(i1).getIcon()).into(childViewHolder.mImageView);
        return view;
    }

    class GroupViewHolder{
        TextView mTextView;

    }

    class ChildViewHolder{
        TextView mTextView;

        ImageView mImageView;
    }

    @Override
    public Object getGroup(int i) {
        return null;
    }

    @Override
    public Object getChild(int i, int i1) {
        return null;
    }

    @Override
    public long getGroupId(int i) {
        return 0;
    }

    @Override
    public long getChildId(int i, int i1) {
        return 0;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }



    @Override
    public boolean isChildSelectable(int i, int i1) {
        return false;
    }
}

Bfrag.java

public class Bfrag extends Fragment implements IView{  //分类页面
    private RecyclerView mRecyclerView;
    private ExpandableListView mExpandableListView;
    private IPrecenterImpl iPrecenter;
    private int page=1;
    private String LeftUrl="http://www.zhaoapi.cn/product/getCatagory";
    private String RightUrl="http://www.zhaoapi.cn/product/getProductCatagory";
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.bfrag, null);

         mRecyclerView = view.findViewById(R.id.bf_rv);
         mExpandableListView = view.findViewById(R.id.bf_elv);

         iPrecenter = new IPrecenterImpl(this);
        initLeftData();
        initRightData();
        return view;
    }

    private void initLeftData() {

        HashMap<String, Integer> map = new HashMap<>();
        iPrecenter.startRequestData(LeftUrl, LeftBean.class,map);

    }

    private void initRightData() {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("cid",page);
        iPrecenter.startRequestData(RightUrl, RightBean.class,map);
    }
    @Override
    public void showData(Object data) {

        if (data instanceof LeftBean){
            LeftBean leftBean= (LeftBean) data;

            List<LeftBean.DataBean> data1 = leftBean.getData();

            LeftMyAdapter leftMyAdapter = new LeftMyAdapter(data1);
            mRecyclerView.setAdapter(leftMyAdapter);
            mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false));
            mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));

            leftMyAdapter.setOnItemClickListener(new LeftMyAdapter.onItemClickListener() {
                @Override
                public void onItemClick(int position1) {
                   // Toast.makeText(getActivity(),position1+"",Toast.LENGTH_SHORT).show();
                    page=position1;
                   initRightData();
                }
            });
        }else if (data instanceof RightBean){

            RightBean rightBean= (RightBean) data;

            List<RightBean.DataBean> data1 = rightBean.getData();
            RightAdapter rightAdapter = new RightAdapter(getActivity(), data1);
            mExpandableListView.setAdapter(rightAdapter);

            for (int k=0;k<data1.size();k++){
                mExpandableListView.expandGroup(k);
            }
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值