Estoy usando la excelente vista drag-sort-list de Carl Bauer (https://github.com/bauerca/drag-sort-listview) para implementar una vista de lista activada por drag-sort. Sin embargo, mi requisito es no necesitar un control de arrastre en la lista, sino permitir que el usuario arrastre los elementos de la lista utilizando el elemento mismo.setOnItemLongClickListener y setOnItemClickListener no se activan cuando se utiliza drag-sort-listview (DSLV)
He conseguido que esa pieza funcione, estableciendo la propiedad @ id/drag en el elemento de la lista. Sin embargo, tiene un efecto secundario de no responder a los elementos itemClick y itemLongClick.
¿Hay alguna manera de hacer que los clics de elemento o clics largos funcionen sin tener un diseño arrastrable por separado?
Como referencia, el código se parece a continuación -
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();
}
});
Como una ventaja, si alguien puede ayuda a habilitar la selección múltiple además de hacer clic/clic largo, sería muy apreciado.
Gracias!