二级列表

//二级列表Fragment内容
public class FenleiFragment extends Fragment {

    private RecyclerView lv_left;
    private ExpandableListView lv_right;
    private List<String> group = new ArrayList<>();
    private List<List<RightChildBean.DatasBean.ClassListBean>> child = new ArrayList<>();
    private int titleSize;

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

        View view = inflater.inflate(R.layout.fragment_fenlei, container, false);

        lv_left = (RecyclerView) view.findViewById(R.id.lv_left);
        lv_left.setLayoutManager(new LinearLayoutManager(getActivity()));
        lv_left.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL));
        lv_right = (ExpandableListView) view.findViewById(R.id.lv_right);

        LeftList();

        return view;
    }

    private void getRightItem(String gc_id){
        String url = String.format(Api.RIGHT, gc_id);
        HttpUtil.getInstance(getActivity()).doGet(url, null, null, RightChildBean.class, new OnNetListener() {
            @Override
            public void onSuccess(BaseBean baseBean) throws IOException {
                RightChildBean rightChildBean = (RightChildBean) baseBean;
                int size = rightChildBean.getDatas().getClass_list().size();
                List<RightChildBean.DatasBean.ClassListBean> li = new ArrayList<RightChildBean.DatasBean.ClassListBean>();

                for (int i=0;i<size;i++){
                    String gcID = rightChildBean.getDatas().getClass_list().get(i).getGc_id();
                    String gc_name = rightChildBean.getDatas().getClass_list().get(i).getGc_name();

                    RightChildBean.DatasBean.ClassListBean classListBean = new RightChildBean.DatasBean.ClassListBean();
                    classListBean.setGc_id(gcID);
                    classListBean.setGc_name(gc_name);
                    li.add(classListBean);
                }

                child.add(li);
                if(child.size() == titleSize){
                    MyExpandLvAdapter myExpandLvAdapter = new MyExpandLvAdapter(getActivity(), group, child);
                    lv_right.setAdapter(myExpandLvAdapter);
                    int groupCount = lv_right.getCount();
                    for (int i=0;i<groupCount;i++){
                        lv_right.expandGroup(i);
                    }

                }
            }

            @Override
            public void onError(IOException e) {

            }
        });
    }

    private void getRightListTitle(String gcId) {
        String url = String.format(Api.RIGHT, gcId);
        HttpUtil.getInstance(getActivity()).doGet(url, null, null, RightTopBean.class, new OnNetListener() {

            @Override
            public void onSuccess(BaseBean baseBean) throws IOException {

                if (group.size() > 0) {
                    group.clear();
                }
                if (child.size() > 0) {
                    child.clear();
                }

                RightTopBean rightTopBean = (RightTopBean) baseBean;
                titleSize = rightTopBean.getDatas().getClass_list().size();

                for (int i = 0; i< titleSize; i++){
                    group.add(rightTopBean.getDatas().getClass_list().get(i).getGc_name());
                    String gc_Id = rightTopBean.getDatas().getClass_list().get(i).getGc_id();
                    getRightItem(gc_Id);
                }
            }

            @Override
            public void onError(IOException e) {

            }
        });
    }

    private void LeftList() {
        HttpUtil.getInstance(getActivity()).doGet(Api.FEILEI, null, null, FeileiBean.class, new OnNetListener() {
            @Override
            public void onSuccess(BaseBean baseBean) throws IOException {
                FeileiBean feilei = (FeileiBean) baseBean;
                LeftAdapter leftAdapter = new LeftAdapter(getActivity(), feilei.getDatas().getClass_list());
                lv_left.setAdapter(leftAdapter);

                getRightListTitle(feilei.getDatas().getClass_list().get(0).getGc_id());
                leftAdapter.setOnItemListener(new LeftAdapter.OnItemListener() {
                    @Override
                    public void onItemClick(FeileiBean.DatasBean.ClassListBean classListBean) {
                        String gc_id = classListBean.getGc_id();
                        getRightListTitle(gc_id);
                    }
                });
            }

            @Override
            public void onError(IOException e) {

            }
        });
    }
}
//二级列表Adapter
public class MyExpandLvAdapter extends BaseExpandableListAdapter {

    private Context context;
    private List<String> group;
    private List<List<RightChildBean.DatasBean.ClassListBean>> child;

    public MyExpandLvAdapter(Context context, List<String> group, List<List<RightChildBean.DatasBean.ClassListBean>> child) {
        this.context = context;
        this.group = group;
        this.child = child;
    }

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

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

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

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return child.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 false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.right_item,null);
        TextView tv_title = (TextView) convertView.findViewById(R.id.tv_title);
        tv_title.setText(group.get(groupPosition));

        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        convertView = LayoutInflater.from(context).inflate(R.layout.right_child_item,null);
        RecyclerView rv = (RecyclerView) convertView.findViewById(R.id.rv);
        rv.setLayoutManager(new GridLayoutManager(context,3));

        RvAdapter rvAdapter = new RvAdapter(context,child.get(groupPosition));
        rv.setAdapter(rvAdapter);
        rvAdapter.setOnChildListener(new RvAdapter.OnChildListener() {
            @Override
            public void onChildItemClick(RightChildBean.DatasBean.ClassListBean classListBean) {
                String gc_id = classListBean.getGc_id();
                Intent intent = new Intent(context, GoodsListActivity.class);
                intent.putExtra("gcId",gc_id);
                context.startActivity(intent);
            }
        });
        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }
}
//第二级列表内容
public class RvAdapter extends RecyclerView.Adapter {

    private Context context;
    private List<RightChildBean.DatasBean.ClassListBean> list;
    private OnChildListener onChildListener;

    public interface OnChildListener{
        public void onChildItemClick(RightChildBean.DatasBean.ClassListBean classListBean);
    }

    public void setOnChildListener(OnChildListener onChildListener){
        this.onChildListener = onChildListener;
    }

    public RvAdapter(Context context, List<RightChildBean.DatasBean.ClassListBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(context).inflate(R.layout.rv_item, parent, false);

        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        MyViewHolder myViewHolder = (MyViewHolder) holder;
        myViewHolder.tv.setText(list.get(position).getGc_name());
        myViewHolder.tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(onChildListener!=null){
                    onChildListener.onChildItemClick(list.get(position));
                }
            }
        });
    }

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

    class MyViewHolder extends RecyclerView.ViewHolder{

        private final TextView tv;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv = (TextView) itemView.findViewById(R.id.tv);
        }
    }
}
//一级列表内容
public class LeftAdapter extends RecyclerView.Adapter {

    private Context context;
    private List<FeileiBean.DatasBean.ClassListBean> list;
    private OnItemListener onItemListener;

    public interface OnItemListener{
        public void onItemClick(FeileiBean.DatasBean.ClassListBean classListBean);
    }

    public void setOnItemListener(OnItemListener onItemListener){
        this.onItemListener = onItemListener;
    }

    public LeftAdapter(Context context, List<FeileiBean.DatasBean.ClassListBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.left_item, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
        MyViewHolder myViewHolder = (MyViewHolder) holder;
        String imagesUrl = list.get(position).getImage();
        myViewHolder.lv_left_tv.setText(list.get(position).getGc_name());
        ImageLoader.getInstance().displayImage(imagesUrl, myViewHolder.lv_left_iv);

        //给左侧条目设置点击事件
        myViewHolder.ll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(onItemListener!=null){
                    onItemListener.onItemClick(list.get(position));
                }
            }
        });
    }

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

    private class MyViewHolder extends RecyclerView.ViewHolder {

        private ImageView lv_left_iv;
        private TextView lv_left_tv;
        private LinearLayout ll;

        public MyViewHolder(View itemView) {
            super(itemView);
            lv_left_iv = (ImageView) itemView.findViewById(R.id.lv_left_iv);
            lv_left_tv = (TextView) itemView.findViewById(R.id.lv_left_tv);
            ll = (LinearLayout) itemView.findViewById(R.id.ll);
        }
    }

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值