studio soltar programacion objetos móviles mover ejemplo drop desarrollo curso arrastrar aplicaciones and android listview
here

programacion - Vista de Lista de Android Arrastrar y Soltar



manual de programacion android pdf (5)

Ahora es bastante fácil de implementar para RecyclerView con ItemTouchHelper . Simplemente anule el método ItemTouchHelper.Callback de ItemTouchHelper.Callback :

@Override public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { mMovieAdapter.swap(viewHolder.getAdapterPosition(), target.getAdapterPosition()); return true; }

Un buen tutorial sobre esto se puede encontrar en medium.com: Arrastrar y deslizar con RecyclerView

Tengo una lista de registros en una vista de lista que quiero que el usuario pueda volver a ordenar usando un método de arrastrar y soltar. He visto esto implementado en otras aplicaciones, pero no he encontrado un tutorial para él. Debe ser algo que los demás también necesitan. ¿Alguien puede indicarme algún código para hacer esto?


Descubrí que github.com/bauerca/drag-sort-listview funcionaba bien, aunque comenzar con él podría haber sido más fácil. Aquí hay un breve tutorial sobre cómo usarlo en Android Studio con una lista en memoria:

  1. Agregue esto a las dependencias de build.gradle para su aplicación:

    compile ''asia.ivity.android:drag-sort-listview:1.0'' // Corresponds to release 0.6.1

  2. Cree un recurso para el ID del identificador de arrastre creando o agregando values/ids.xml :

    <resources> ... possibly other resources ... <item type="id" name="drag_handle" /> </resources>

  3. Cree un diseño para un elemento de la lista que incluya su imagen favorita del controlador de arrastre y asigne su ID a la ID que creó en el paso 2 (por ejemplo, drag_handle ).

  4. Cree un diseño DragSortListView, algo como esto:

    <com.mobeta.android.dslv.DragSortListView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:dslv="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" dslv:drag_handle_id="@id/drag_handle" dslv:float_background_color="@android:color/background_light"/>

  5. Establezca una derivada de ArrayAdapter con una anulación de getView que represente su vista de elemento de lista.

    final ArrayAdapter<MyItem> itemAdapter = new ArrayAdapter<MyItem>(this, R.layout.my_item, R.id.my_item_name, items) { // The third parameter works around ugly Android legacy. http://.com/a/18529511/145173 @Override public View getView(int position, View convertView, ViewGroup parent) { View view = super.getView(position, convertView, parent); MyItem item = getItem(position); ((TextView) view.findViewById(R.id.my_item_name)).setText(item.getName()); // ... Fill in other views ... return view; } }; dragSortListView.setAdapter(itemAdapter);

  6. Establezca un escucha de caída que reorganiza los elementos a medida que se eliminan.

    dragSortListView.setDropListener(new DragSortListView.DropListener() { @Override public void drop(int from, int to) { MyItem movedItem = items.get(from); items.remove(from); if (from > to) --from; items.add(to, movedItem); itemAdapter.notifyDataSetChanged(); } });


DragListView lib hace esto realmente ordenado con un soporte muy bueno para animaciones personalizadas como animaciones de elevación. También se mantiene y actualiza regularmente.

Aquí es cómo lo usa:

1: agregue la lib para gradle primero

dependencies { compile ''com.github.woxthebox:draglistview:1.2.1'' }

2: Agregar lista desde xml

<com.woxthebox.draglistview.DragListView android:id="@+id/draglistview" android:layout_width="match_parent" android:layout_height="match_parent"/>

3: configurar el oyente de arrastre

mDragListView.setDragListListener(new DragListView.DragListListener() { @Override public void onItemDragStarted(int position) { } @Override public void onItemDragEnded(int fromPosition, int toPosition) { } });

4: crear un adaptador anulado desde DragItemAdapter

public class ItemAdapter extends DragItemAdapter<Pair<Long, String>, ItemAdapter.ViewHolder> public ItemAdapter(ArrayList<Pair<Long, String>> list, int layoutId, int grabHandleId, boolean dragOnLongPress) { super(dragOnLongPress); mLayoutId = layoutId; mGrabHandleId = grabHandleId; setHasStableIds(true); setItemList(list); }

5: Implementar un visor que se extiende desde DragItemAdapter.ViewHolder

public class ViewHolder extends DragItemAdapter.ViewHolder { public TextView mText; public ViewHolder(final View itemView) { super(itemView, mGrabHandleId); mText = (TextView) itemView.findViewById(R.id.text); } @Override public void onItemClicked(View view) { } @Override public boolean onItemLongClicked(View view) { return true; } }

Para obtener información más detallada, vaya a https://github.com/woxblom/DragListView


Estoy agregando esta respuesta para los que buscan en Google sobre esto ...

Hubo un episodio de DevBytes ( ListView Cell Dragging and Rearranging ) recientemente que explica cómo hacer esto

Puede encontrarlo aquí también, el código de muestra está disponible here .

Lo que básicamente hace este código es que crea una vista de lista dynamic listview mediante la extensión de la vista de lista que admite el arrastre e intercambio de celdas. Para que pueda usar DynamicListView lugar de su ListView básico y eso es todo, ha implementado un ListView con Arrastrar y soltar.


He estado trabajando en esto desde hace un tiempo. Es difícil acertar, y no pretendo que lo haga, pero estoy contento con eso hasta ahora. Mi código y varias demos se pueden encontrar en

Su uso es muy similar al TouchInterceptor (en el que se basa el código), aunque se han realizado cambios significativos en la implementación.

DragSortListView tiene un desplazamiento suave y predecible al arrastrar y mezclar elementos. Las combinaciones de elementos son mucho más consistentes con la posición del elemento que arrastra / flota. Los artículos de la lista de altura heterogénea son compatibles. El desplazamiento por arrastre es personalizable (demuestro un desplazamiento rápido de arrastre a través de una larga lista, aunque no se trata de una aplicación). Los encabezados / pies de página son respetados. etc. ?? Echar un vistazo.