8

Carl Bauer(https://github.com/bauerca/drag-sort-listview)の優れたドラッグソートリストビューを使用しています。ドラッグソート対応のリストビューを実装します。しかし、私の要件は、リストにドラッグハンドルが必要ではなく、アイテム自体を使用してリストアイテムをドラッグできるようにすることです。setOnItemLongClickListenerとsetOnItemClickListenerは、ドラッグソートリストビュー(DSLV)を使用するとトリガーされません

@ id/dragプロパティをリスト項目自体に設定することで、その部分が機能するようになりました。 ただし、itemClickおよびitemLongClickイベントに応答しないという副作用があります。

別々のドラッグ可能なレイアウトを持たずにアイテムのクリック/ロングクリックを有効にする方法はありますか?

<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(); 
     } 
    }); 

ListView.xml - 参考

は、私のコードは次のようになります。ボーナスとして、もし誰でもclick/longclickに加えて複数選択を可能にするのに役立ちます。

ありがとうございます!

答えて

5

あなたはcom.mobeta.android.dslv.DragSortListViewレイアウトには、このパラメータを設定する必要があり、あなたのリストの中OnItemClickOnItemLongClickを使用できるようにします。

dslv:drag_start_mode="onMove"