//二级列表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); } } }