5

Ich habe eine erweiterbare Listview. Ich implementiere eine Löschung des listItem auf Swipe Left von jedem Gegenstand.Onfling und OnTouch funktioniert nicht zusammen

Ich benutze benutzerdefinierte Adapter zum Bestücken von Listview-Elementen.

public class InsightsListAdapter extends BaseExpandableListAdapter { 
@Override 
public View getGroupView(final int groupPosition, boolean isExpanded, 
     View convertView, ViewGroup parent) { 
    View row = convertView; 
    row = inflater_.inflate(R.layout.insight_list_item, null); 

    final GestureDetector gdt = new GestureDetector(new GestureListener()); 
    row.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      swipedViewPosition_=groupPosition; 
      swipedView_=v; 
      gdt.onTouchEvent(event); 
      return true; 
     } 
    }); 

    return row; 
} 

Ich verwende GestureListener wie unten

private static final int SWIPE_MIN_DISTANCE = 200; 
private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

private class GestureListener extends SimpleOnGestureListener { 

    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) { 
      System.out.println("Left swiped--------"); 
      removeListItem(); 
      return false; // Right to left 
     } 
     return false; 
    } 

} 

Da es sich um eine erweiterbare Listview ist ich einige Klick-Funktionalitäten in der acticity

 insightList_.setOnGroupClickListener(new OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView parent, View v, 
        int groupPosition, long id) { 
       System.out.println("Group clicked---------"); 
       showClear(true); 
       selectedItem_ = null; 

       return false; 
      } 
     }); 

Aber jetzt auf OnFling umgesetzt wird immer genannt. aber nicht OnGroupClick()

Wenn ich false von onTouch Ereignisfunktion vom Adapter zurückgibt, wird OnGroupClick zwar angerufen, aber nicht OnFling().

Entweder funktioniert Fling oder OnGroupClick, aber nicht beide gleichzeitig.

+0

ontouchlistner auf Listenansicht setzen und chek es funktioniert oder nicht .. –

Antwort

1

Auf OnTouch Veranstaltung der Reihe

row.setOnTouchListener (neu OnTouchListener() {[..]

Sie true zurück, so dass nicht mehr Berührungsereignis wird danach aufgerufen werden, ändern, um false zurückzugeben, und das Berührungsereignis wird in die nächste Kindansicht fallen