二级列表

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

}


1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值