1

Ich entwickle eine Android-Anwendung, in der ich Expandablelistview verwende, um einige Daten anzuzeigen. Zur Zeit wird die Listenansicht sowohl beim Klicken auf die Gruppe als auch beim Loslassen nach einem langen Klick erweitert. Aber ich muss verhindern, dass die Expandablelistview auf langen Klick zu erweitern.Blockerweiterung der erweiterbaren Listenansicht bei langem Klick

sieht mein Code-Segment wie folgt aus:

elvItemList = (ExpandableListView) root.findViewById(R.id.elv_item_list); 
elvItemList.setOnGroupClickListener(this); 
elvItemList.setAdapter(smListAdapter); 
elvItemList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
     if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
      Utils.logit("SMLOG", "Long button pressed"); 
      // 
     } 
     return false; 
    } 
}); 

kann jemand mir helfen?

Antwort

1

ExpandableListView.PACKED_POSITION_TYPE_GROUP ist die ID einer Gruppe, ändern Sie sie in ExpandableListView.PACKED_POSITION_TYPE_CHILD und Sie können mit Longclicks auf Gruppen Childs manipulieren.

So etwas: zu

elvItemList.setOnItemLongClickListener(new OnItemLongClickListener() { 
@Override 
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 
// Your code with group long click 
return true; 
} 
return false; 
} 
}); 
+0

Können Sie meine que upvote? – shafeeq

0
public void stopExpandOnLongClick() 
{ 
    expListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      boolean checkClick=false; 
      long packedPosition = expListView.getExpandableListPosition(position); 

      int itemType = ExpandableListView.getPackedPositionType(packedPosition); 
      int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition); 

      /* if group item clicked */ 
      if (itemType == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // ... 
       if(expListView.isGroupExpanded(groupPosition)) 
       { 
        Toast.makeText(MainActivity.this, "It's normal group collaspe", Toast.LENGTH_LONG).show(); 
       } 
       else 
       { 
        Toast.makeText(MainActivity.this, "This Grouo is not going to expand on long click", Toast.LENGTH_LONG).show(); 
        //you can put your logic when you long press on Group header 
        checkClick=true; 
       } 
      } 
      return checkClick; 
     } 
    }); 

} 
+0

Ich denke, das wird gut für Sie funktionieren. :) –

Verwandte Themen