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!