Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ExpandableListView.getPackedPositionGroup始终返回0_Java_Android_Expandablelistview - Fatal编程技术网

Java ExpandableListView.getPackedPositionGroup始终返回0

Java ExpandableListView.getPackedPositionGroup始终返回0,java,android,expandablelistview,Java,Android,Expandablelistview,我有一个带有上下文菜单的可扩展列表视图。不管我有多少组项目,它总是返回0 我的代码: @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); ExpandableListView.ExpandableListContextMenuInfo info =

我有一个带有上下文菜单的可扩展列表视图。不管我有多少组项目,它总是返回0

我的代码:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);

    ExpandableListView.ExpandableListContextMenuInfo info = (ExpandableListView.ExpandableListContextMenuInfo) menuInfo;

    int group = ExpandableListView.getPackedPositionGroup((int) info.packedPosition);
    int type = ExpandableListView.getPackedPositionType((int) info.packedPosition);
    int child = ExpandableListView.getPackedPositionChild((int) info.packedPosition);

    Log.d("Value ConTEXT: " + String.valueOf(group), String.valueOf(child) + " GROUP COUNT " + getExpandableListAdapter().getGroupCount());
    menu.setHeaderTitle(((Person) dAdapter.getGroup(group)).getName());
    // menu.add(0, 0, 0, "Geschiedenis verwijderen");
    menu.add(1, 1, 1, "Verwijderen uit lijst");
}
和我的自定义基本列表适配器:

public class DrinkActionAdapter extends BaseExpandableListAdapter {

    Activity context;
    ArrayList<Person> personsGroup;
    ArrayList<Person> personsChild;

    public DrinkActionAdapter(Activity context, ArrayList<Person> personsGroup,
            ArrayList<Person> personsChild) {
        this.context = context;
        this.personsGroup = personsGroup;
        this.personsChild = personsChild;
    }

    public void addPerson(Person p) {
        personsGroup.add(p);
        personsChild.add(p);
        for (Person pp : personsGroup) {
            Log.d(pp.getName(), pp.getName());
        }
    }

    public Object getChild(int groupPosition, int childPosition) {
        Log.d("GetChild" + String.valueOf(groupPosition), String.valueOf(childPosition));
        return personsGroup.get(childPosition);
    }

    public long getChildId(int groupPosition, int childPosition) {
        Log.d("GetChildID" + String.valueOf(groupPosition), String.valueOf(childPosition));
        return childPosition;
    }

    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {

        Person p = personsChild.get(groupPosition);
        View v = convertView;
        Log.d(p.getName(), p.getName() + "CHILD");
        if (v == null) {

            LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = mInflater.inflate(R.layout.drink_action_child, null);
        }
        if (personsChild.size() != 0) {
            TextView lbFavoriteDrink = (TextView) v.findViewById(R.id.drink_action_child_lb_favorite_drink);
            if (p.getFavoriteDrink() != null) {
                lbFavoriteDrink.setText(p.getFavoriteDrink().getName());
            } else {
                lbFavoriteDrink.setText("Nog niks gedronken.");
            }
            TextView lbCost = (TextView) v.findViewById(R.id.drink_action_child_lb_cost);
            lbCost.setText(String.valueOf(p.getTotalMoneySpent()));

            TextView lbAmount = (TextView) v.findViewById(R.id.drink_action_child_lb_amount);
            lbAmount.setText(String.valueOf(p.getTotalAmountOfDrinks()));

            TextView lbKcal = (TextView) v.findViewById(R.id.drink_action_child_lb_kcal);
            lbKcal.setText(String.valueOf(p.getTotalKcal()));

            TextView lbPunishment = (TextView) v.findViewById(R.id.drink_action_child_lb_boete);
            lbPunishment.setText(p.getPunishment());

            TextView lbWeightPutOn = (TextView) v.findViewById(R.id.drink_action_child_lb_weight);
            lbWeightPutOn.setText(String.valueOf(p.getWeightPutOn()));

            TextView lbLiters = (TextView) v.findViewById(R.id.drink_action_child_lb_liter);
            lbLiters.setText(String.valueOf(p.getAmountOfLiters()));

            TextView lbTimeSinceLastDrink = (TextView) v.findViewById(R.id.drink_action_child_lb_time_since_last_drink);
            lbTimeSinceLastDrink.setText(String.valueOf(p.getTimeSinceLast()[2]) + ":" + String.valueOf(p.getTimeSinceLast()[1]) + ":" + String.valueOf(p.getTimeSinceLast()[0]));

        } else {
            // WHAT TO DO IF NO PROFILES
        }

        return v;
    }

    public int getChildrenCount(int groupPosition) {
        Log.d("GetChildrenCount" + String.valueOf(groupPosition), String.valueOf(groupPosition));
        return 1;
        // return persons.size();
    }

    public Object getGroup(int groupPosition) {
        Log.d(String.valueOf(groupPosition), String.valueOf(groupPosition) + personsGroup.get(groupPosition).getName());
        return personsGroup.get(groupPosition);
    }

    public int getGroupCount() {

        return personsGroup.size();
    }

    public long getGroupId(int groupPosition) {
        Log.d(String.valueOf(groupPosition) + "GetGroupId", String.valueOf(groupPosition));
        return groupPosition;
    }

    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        Person p = personsGroup.get(groupPosition);
        View v = convertView;
        Log.d(groupPosition + " " + p.getName(), p.getName() + "GROUP");
        if (v == null) {

            LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = mInflater.inflate(R.layout.drink_action_item, null);

        }
        if (personsGroup.size() != 0) {

            TextView lbName = (TextView) v.findViewById(R.id.drink_action_lb_name);
            TextView lbAlcohol = (TextView) v.findViewById(R.id.drink_action_info_current_alcohol);

            ImageView btnDrink = (ImageView) v.findViewById(R.id.drink_action_item_btn_drink);
            btnDrink.setTag(p);

            lbName.setText(p.getName());
            lbAlcohol.setText(String.valueOf(p.getCurrentAlcoholLevel()));

        } else {
            // WHAT TO DO IF NO PROFILES
        }

        return v;
    }

    public boolean hasStableIds() {
        // TODO Auto-generated method stub
        return true;
    }

    public boolean isChildSelectable(int groupPosition, int childPosition) {
        // TODO Auto-generated method stub
        return true;
    }

}
公共类DrinkActionAdapter扩展了BaseExpandableListAdapter{
活动语境;
ArrayList personsGroup;
ArrayList personsChild;
公共DrinkActionAdapter(活动上下文、ArrayList PersonGroup、,
ArrayList personsChild){
this.context=上下文;
this.personsGroup=personsGroup;
this.personsChild=personsChild;
}
公众人士(p人){
添加(p);
添加(p);
对于(个人pp:PersonGroup){
Log.d(pp.getName(),pp.getName());
}
}
公共对象getChild(int-groupPosition,int-childPosition){
Log.d(“GetChild”+String.valueOf(groupPosition)、String.valueOf(childPosition));
返回personsGroup.get(childPosition);
}
公共长getChildId(int-groupPosition,int-childPosition){
Log.d(“GetChildID”+String.valueOf(groupPosition)、String.valueOf(childPosition));
返回子位置;
}
公共视图getChildView(int-groupPosition、int-childPosition、布尔isLastChild、视图convertView、视图组父级){
Person p=personsChild.get(groupPosition);
视图v=转换视图;
Log.d(p.getName(),p.getName()+“CHILD”);
如果(v==null){
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
v=最小充气量(R.layout.drink\u action\u child,空);
}
如果(personsChild.size()!=0){
TextView lbFavoriteDrink=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u favorite\u drink);
if(p.getFavoriteDiff()!=null){
lbfavoritedread.setText(p.getfavoritedread().getName());
}否则{
lbfavoritedink.setText(“Nog niks gedroken”);
}
TextView lbCost=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u cost);
lbCost.setText(String.valueOf(p.getTotalMoneyPent());
TextView lbAmount=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u amount);
lbAmount.setText(String.valueOf(p.getTotalAmountOfDrinks());
TextView lbKcal=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u kcal);
lbKcal.setText(String.valueOf(p.gettotalkal());
TextView lbpopulation=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u boete);
lbpopulation.setText(p.getpopulation());
TextView lbWeightPutOn=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u weight);
lbWeightPutOn.setText(String.valueOf(p.getWeightPutOn());
TextView磅升=(TextView)v.findviewbyd(R.id.drug\u action\u child\u磅升);
lbl.setText(String.valueOf(p.getamountfliters());
TextView lbTimeSinceLastDrink=(TextView)v.findViewById(R.id.drink\u action\u child\u lb\u time\u自上次饮酒以来);
lbtimesincelast.setText(String.valueOf(p.getTimeSinceLast()[2])+”:“+String.valueOf(p.getTimeSinceLast()[1])+”:“+String.valueOf(p.getTimeSinceLast()[0]);
}否则{
//如果没有配置文件,该怎么办
}
返回v;
}
公共整数getChildrenCount(整数组位置){
Log.d(“GetChildrenCount”+String.valueOf(groupPosition),String.valueOf(groupPosition));
返回1;
//返回人。大小();
}
公共对象getGroup(int-groupPosition){
Log.d(String.valueOf(groupPosition)、String.valueOf(groupPosition)+personsGroup.get(groupPosition.getName());
returnpersonsgroup.get(groupPosition);
}
public int getGroupCount(){
return personsGroup.size();
}
公共长getGroupId(int-groupPosition){
Log.d(String.valueOf(groupPosition)+“GetGroupId”,String.valueOf(groupPosition));
返回组位置;
}
公共视图getGroupView(int groupPosition、布尔isExpanded、视图convertView、视图组父级){
Person p=personsGroup.get(groupPosition);
视图v=转换视图;
Log.d(groupPosition+“”+p.getName(),p.getName()+“GROUP”);
如果(v==null){
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
v=最小充气量(R.布局.饮料\动作\项,空);
}
if(personsGroup.size()!=0){
TextView lbName=(TextView)v.findViewById(R.id.drink\u action\u lb\u name);
TextView lbalcool=(TextView)v.findViewById(R.id.drink\u action\u info\u current\u酒精);
ImageView btnDrink=(ImageView)v.findViewById(R.id.drink\u action\u item\u btn\u drink);
btnDrink.setTag(p);
lbName.setText(p.getName());
lbalcool.setText(String.valueOf(p.getCurrentAlcoholLevel());
}否则{
//如果没有配置文件,该怎么办
}
返回v;
}
公共布尔表ID(){
//TODO自动生成的方法存根
返回true;
}
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
//TODO自动生成的方法存根
返回true;
}
}

每当我长按一个项目时,它总是选择第一个项目。

在返回v之前,尝试注册到getChildView()方法中的contextMenu使用此代码
((活动)上下文)

不,这只允许我长按子项,并在该子项上给出NullpointerException。