我如何创建一个 ExpandableListView,其中孩子是一个类参数

问题描述

我正在尝试在 Android Studio 中创建一个食物日记,并且我正在使用 ExpandableListView 将食物分成几餐(组是餐号,组的孩子是 Food 类的变量,我创建)。在我找到的每个教程中,如何使儿童变量成为 Food 类而不是 String ?无法弄清楚如何正确编写适配器。而且,是否可以在单击按钮后添加组(膳食)? (假设用户决定要添加另一餐,所以他按下按钮,现在有 4 餐而不是 3 餐,在这种情况下是否可以命名组?)

这是使用字符串作为子变量的适配器

public class MainAdapter extends Baseexpandablelistadapter {

    Context context;
    List<String> listMeal;
    HashMap<String,List<String>> listFood;

    public MainAdapter(Context context,List<String> listMeal,HashMap<String,List<String>>
                       listFood){
        this.context = context;
        this.listMeal = listMeal;
        this.listFood = listFood;
    }



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

    @Override
    public int getChildrenCount(int groupPosition) {
        return this.listFood.get(this.listMeal.get(groupPosition)).size();
    }

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

    @Override
    public Object getChild(int groupPosition,int childPosition) {
        return this.listFood.get(this.listMeal.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) {
        String group = (String) getGroup(groupPosition);
        if(convertView == null){
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.list_group,null);
        }

        TextView textView = convertView.findViewById(R.id.list_parent);
        textView.setText(group);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition,int childPosition,boolean isLastChild,ViewGroup parent) {
        String child = (String) getChild(groupPosition,childPosition);
        if (convertView == null){
            LayoutInflater layoutInflater = (LayoutInflater) this.context
                    .getSystemService(context.LAYOUT_INFLATER_SERVICE);
            convertView = layoutInflater.inflate(R.layout.list_item,null);
        }

        TextView textView = convertView.findViewById(R.id.list_child);
        textView.setText(child);
        return convertView;
    }

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...