电商项目分类页面

1.fragment页面

package com.example.jingdong.ui.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.DividerItemDecoration;
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.ExpandableListView;

import com.example.jingdong.R;
import com.example.jingdong.bean.CatagoryBean;
import com.example.jingdong.bean.ChildCataBean;
import com.example.jingdong.presenter.CatagoryPresenterImp;
import com.example.jingdong.presenter.ChildCataPresenterImp;
import com.example.jingdong.ui.adapter.ElvAdapter;
import com.example.jingdong.ui.adapter.RvLeftAdapter;
import com.example.jingdong.ui.inter.CatagoryView;
import com.example.jingdong.ui.inter.ChildCataView;
import com.example.jingdong.ui.inter.OnItemClickListener;

import java.util.List;

public class FenLeiFragment extends Fragment implements CatagoryView,ChildCataView {
    private View view;
    private RecyclerView rvLeft;
    private ExpandableListView elv;
    private CatagoryPresenterImp catagoryPresenterImp;
    private ChildCataPresenterImp childCataPresenterImp;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_fenlei, container, false);
        //初始化数据
        initView(view);
        //绑定左侧数据
        catagoryPresenterImp = new CatagoryPresenterImp(this);
        catagoryPresenterImp.getCatagory();
        //绑定右侧数据
        childCataPresenterImp = new ChildCataPresenterImp(this);
        return view;
    }


    private void initView(View view) {
        rvLeft = (RecyclerView) view.findViewById(R.id.rvLeft);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        rvLeft.setLayoutManager(linearLayoutManager);
        rvLeft.addItemDecoration(new DividerItemDecoration(getContext(),RecyclerView.VERTICAL));
        elv = (ExpandableListView) view.findViewById(R.id.elv);
    }
    //显示左侧分类
    @Override
    public void showCatagory(final List<CatagoryBean.DataBean> dataBeans) {
        final RvLeftAdapter rvLeftAdapter = new RvLeftAdapter(dataBeans, getContext());
        rvLeft.setAdapter(rvLeftAdapter);
        //默认显示第一个cid的数据
        childCataPresenterImp.getChildCatagory(dataBeans.get(0).getCid()+"");
        //默认选中第一个数据
        rvLeftAdapter.changeCheck(0,true);
        //点击的监听
        rvLeftAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                rvLeftAdapter.changeCheck(position,true);
                int cid = dataBeans.get(position).getCid();
                childCataPresenterImp.getChildCatagory(cid+"");
            }

            @Override
            public void onItemLongClick(int position) {

            }
        });
    }

    //显示子分类
    @Override
    public void showChildCata(List<String> groupList,List<List<ChildCataBean.DataBean.ListBean>> list) {
        ElvAdapter elvAdapter = new ElvAdapter(groupList, list, getContext());
        elv.setAdapter(elvAdapter);
        //默认展开列表
        for (int i = 0; i < groupList.size(); i++) {
            elv.expandGroup(i);
        }

        elv.setGroupIndicator(null);

        elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
                return true;
            }
        });

    }

    //销毁时解绑数据
    @Override
    public void onDestroy() {
        super.onDestroy();
        catagoryPresenterImp.detach();
        childCataPresenterImp.detach();
    }


}

2.获取右侧子分类的p层

package com.example.jingdong.presenter;

import com.example.jingdong.bean.ChildCataBean;
import com.example.jingdong.model.ChildCataModelImp;
import com.example.jingdong.net.OnNetListener;
import com.example.jingdong.ui.inter.ChildCataView;
import com.google.gson.Gson;

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

public class ChildCataPresenterImp implements ChildCataPresenter{

    private ChildCataView childCataView;
    private final ChildCataModelImp childCataModelImp;

    public ChildCataPresenterImp(ChildCataView childCataView) {
        this.childCataView=childCataView;
        childCataModelImp = new ChildCataModelImp();
    }

    @Override
    public void getChildCatagory(String cid) {
        childCataModelImp.getChildCatagory(cid, new OnNetListener() {
            @Override
            public void onSuccess(String result) {
                ChildCataBean childCataBean = new Gson().fromJson(result, ChildCataBean.class);
                if ("0".equals(childCataBean.getCode()) && childCataView!=null){
                    //定义数组存放数据
                    List<String> list_group = new ArrayList<>();
                    ArrayList<List<ChildCataBean.DataBean.ListBean>> child_lists = new ArrayList<>();
                    //添加分组的数据
                    List<ChildCataBean.DataBean> data = childCataBean.getData();

                    for (int i = 0; i < data.size(); i++) {
                        list_group.add(data.get(i).getName());
                        child_lists.add(data.get(i).getList());
                    }
                    childCataView.showChildCata(list_group,child_lists);

                }
            }

            @Override
            public void onFailed(Exception e) {

            }
        });
    }

    @Override
    public void detach() {
        if (childCataView!=null){
            childCataView=null;
        }
    }
}

3.左侧recycleview的适配器

package com.example.jingdong.ui.adapter;

import android.content.Context;
import android.graphics.Color;
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.jingdong.R;
import com.example.jingdong.bean.CatagoryBean;
import com.example.jingdong.ui.inter.OnItemClickListener;

import java.util.List;

public class RvLeftAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private OnItemClickListener onItemClickListener;
    private List<CatagoryBean.DataBean> list;
    private Context context;
    private LayoutInflater inflater;

    public RvLeftAdapter(List<CatagoryBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener=onItemClickListener;
    }


    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rvleft_item, parent, false);
        RvLeftViewHolder rvLeftViewHolder=new RvLeftViewHolder(view);
        return rvLeftViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        RvLeftViewHolder rvLeftViewHolder= (RvLeftViewHolder) holder;
        rvLeftViewHolder.tv_left.setText(list.get(position).getName());

        if (list.get(position).isChecked()){
            rvLeftViewHolder.tv_left.setTextColor(Color.RED);
            rvLeftViewHolder.tv_left.setBackgroundColor(Color.parseColor("#F3F5F7"));
        }else {
            rvLeftViewHolder.tv_left.setTextColor(Color.BLACK);
            rvLeftViewHolder.tv_left.setBackgroundColor(Color.WHITE);
        }

        //点击的监听
        rvLeftViewHolder.tv_left.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (onItemClickListener!=null){
                    onItemClickListener.onItemClick(position);
                }
            }
        });
    }

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

    class RvLeftViewHolder extends RecyclerView.ViewHolder {
        TextView tv_left;
        public RvLeftViewHolder(View itemView) {
            super(itemView);
            tv_left=itemView.findViewById(R.id.tv_left);
        }
    }


    public void changeCheck(int postion,boolean bool){
        for (int i = 0; i < list.size(); i++) {
            list.get(i).setChecked(false);
        }
        list.get(postion).setChecked(bool);
        notifyDataSetChanged();
    }
}

4.右侧expandablelistview的适配器

package com.example.jingdong.ui.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.PointerIcon;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import com.example.jingdong.R;
import com.example.jingdong.bean.ChildCataBean;
import com.example.jingdong.ui.activity.GoodsListActivity;
import com.example.jingdong.ui.inter.OnItemClickListener;

import java.util.List;

public class ElvAdapter extends BaseExpandableListAdapter{

    private List<String> grouplist;
    private List<List<ChildCataBean.DataBean.ListBean>> childlist;
    private Context context;
    private final LayoutInflater inflater;

    public ElvAdapter(List<String> grouplist, List<List<ChildCataBean.DataBean.ListBean>> childlist, Context context) {
        this.grouplist = grouplist;
        this.childlist = childlist;
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

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

    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
    }

    @Override
    public Object getGroup(int groupPosition) {
        return grouplist.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return childlist.get(groupPosition).get(childPosition);
    }

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

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

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

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GroupViewHolder groupViewHolder;
        if (convertView==null){
            groupViewHolder=new GroupViewHolder();
            convertView=inflater.inflate(R.layout.elv_group,null);
            groupViewHolder.tv_elv=convertView.findViewById(R.id.tv_elv);
            convertView.setTag(groupViewHolder);
        }else {
            groupViewHolder= (GroupViewHolder) convertView.getTag();
        }
        groupViewHolder.tv_elv.setText(grouplist.get(groupPosition));
        return convertView;
    }

    @Override
    public View getChildView(final int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ChildViewHolder childViewHolder;
        if (convertView==null){
            convertView=inflater.inflate(R.layout.elv_child,null);
            childViewHolder=new ChildViewHolder();
            childViewHolder.rv_elv=convertView.findViewById(R.id.rv_elv);
            convertView.setTag(childViewHolder);
        }else {
            childViewHolder= (ChildViewHolder) convertView.getTag();
        }
        //得到数据
        List<ChildCataBean.DataBean.ListBean> listBeans = childlist.get(groupPosition);
        childViewHolder.rv_elv.setLayoutManager(new GridLayoutManager(context,3));
        //创建适配器
        ElvRvAdapter elvRvAdapter = new ElvRvAdapter(listBeans, context);
        childViewHolder.rv_elv.setAdapter(elvRvAdapter);

        //点击跳转的监听
        elvRvAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int position) {
                int pscid = childlist.get(groupPosition).get(position).getPscid();
                Intent intent = new Intent(context, GoodsListActivity.class);
                intent.putExtra("pscid",pscid);
                context.startActivity(intent);
            }

            @Override
            public void onItemLongClick(int position) {

            }
        });

        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

    class GroupViewHolder{
        TextView tv_elv;
    }
    class ChildViewHolder{
        RecyclerView rv_elv;
    }
}

5.右侧expandablelistview子布局的recycleview适配器

package com.example.jingdong.ui.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.LinearLayout;
import android.widget.TextView;

import com.bumptech.glide.Glide;
import com.example.jingdong.R;
import com.example.jingdong.bean.ChildCataBean;
import com.example.jingdong.ui.inter.OnItemClickListener;

import java.util.List;

public class ElvRvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private List<ChildCataBean.DataBean.ListBean> list;
    private Context context;
    private final LayoutInflater inflater;

    private OnItemClickListener onItemClickListener;

    public ElvRvAdapter(List<ChildCataBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    //设置点击事件的方法
    public void setOnItemClickListener(OnItemClickListener onItemClickListener){
        this.onItemClickListener=onItemClickListener;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.elv_rv_item, parent, false);
        ElvRvViewHolder elvRvViewHolder = new ElvRvViewHolder(view);
        return elvRvViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
        ElvRvViewHolder elvRvViewHolder= (ElvRvViewHolder) holder;
        elvRvViewHolder.tv_elvrv.setText(list.get(position).getName());
        Glide.with(context).load(list.get(position).getIcon()).into(elvRvViewHolder.img_elvrv);
        //设置点击监听
        elvRvViewHolder.layout_elv_rv_item.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onItemClickListener.onItemClick(position);
            }
        });
    }

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

    class ElvRvViewHolder extends RecyclerView.ViewHolder {
        LinearLayout layout_elv_rv_item;
        ImageView img_elvrv;
        TextView tv_elvrv;

        public ElvRvViewHolder(View itemView) {
            super(itemView);
            layout_elv_rv_item = itemView.findViewById(R.id.layout_elv_rv_item);
            img_elvrv=itemView.findViewById(R.id.img_elvrv);
            tv_elvrv=itemView.findViewById(R.id.tv_elvrv);
        }
    }
}



猜你喜欢

转载自blog.csdn.net/sui_yz/article/details/80155591