Java ExpandableListView.getPackedPositionGroup始终返回0
我有一个带有上下文菜单的可扩展列表视图。不管我有多少组项目,它总是返回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 =
@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。