8

Ich verwende die ausgezeichnete Drag-sort-listview von Carl Bauer (https://github.com/bauerca/drag-sort-listview) um eine Drag-sort-aktivierte Listenansicht zu implementieren. Meine Anforderung besteht jedoch nicht darin, einen Ziehgriff in der Liste zu benötigen, sondern es dem Benutzer zu ermöglichen, die Listenelemente mithilfe des Elements selbst zu ziehen.setOnItemLongClickListener und setOnItemClickListener werden nicht ausgelöst, wenn ich drag-sort-listview (DSLV) verwende

Ich habe diesen Teil zum Arbeiten gebracht, indem ich die @ id/drag -Eigenschaft auf das Listenelement selbst gesetzt habe. Es hat jedoch einen Nebeneffekt, dass auf Ereignisse von itemClick und itemLongClick nicht reagiert wird.

Gibt es eine Möglichkeit, die Elementklicks/langen Klicks ohne ein separates ziehbares Layout zu erhalten?

Als Referenz mein Code sieht aus wie unten -

ListView.xml:

<com.mobeta.android.dslv.DragSortListView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:dslv="http://schemas.android.com/apk/res/com.myproject" 
    android:id="@+id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    dslv:collapsed_height="1dp" 
    dslv:drag_scroll_start="0.33" 
    dslv:max_drag_scroll_speed="0.5" /> 

ItemView.xml:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="@dimen/list_item_height" 
    android:orientation="horizontal"> 
    <CheckBox 
     android:id="@+id/check_box" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical"/> 
    <TextView 
    android:id="@+id/drag" 
    android:layout_width="0dp" 
    android:layout_height="fill_parent" 
    android:padding="@dimen/list_padding" 
    android:gravity="center_vertical" /> 
</LinearLayout> 

Activity.java:

DragSortListView listView = (DragSortListView) view.findViewById(R.id.list); 

    listView.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      Toast.makeText(arg0.getContext(), ((TextView)arg1).getText(), Toast.LENGTH_SHORT).show(); 
      return false; 
     } 
    }); 

    listView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> listView, View itemView, int index, 
       long id) { 
      Toast.makeText(getView().getContext(), ((TextView)itemView).getText(), Toast.LENGTH_SHORT).show(); 
     } 
    }); 

Als Bonus, wenn es irgendjemand kann help aktivieren multiple-select zusätzlich zu click/longclick, würde es sehr geschätzt werden.

Danke!

Antwort

5

zu können verwenden OnItemClick und OnItemLongClick in Ihrem Listen Sie diese Parameter auf das com.mobeta.android.dslv.DragSortListView Layout einstellen müssen.

dslv:drag_start_mode="onMove"