2016-06-20 19 views
1

私は、似たような質問のほとんどが何年も前に尋ねられたことを知りました。したがって、私は、リストビューにドロップ機能を実装するための新しい簡単な方法があるかどうかを知りたいですか?私はsqilte dbから私のlistviewオブジェクトのデータを取っています。私は簡単なチュートリアルが見つかりませんでした。リンクがあれば教えてください。listviewでドラッグ&ドロップを実装する方法は?

このビデオは次のとおりです:https://www.youtube.com/watch?v=_BZIvjMgH-Q コードのリンクが機能していません。

+1

はい、もっと簡単な方法があります:

次のコードは、私が有用であることが判明したものです。 'RecyclerView'を使用してください。あなたは欲望を見つけることができますhttps://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.punzdwyhd – skywall

+0

これは、今からRecyclerViewを使う方が良いということですか?ドラッグ&ドロップだけでなく、 – Marat

+0

これをチェックしてください。https://github.com/HoneyNeutrons/RecyclerViewUndoSwipe –

答えて

0

コメントの中で最も簡単な方法は、RecyclerViewを使用してドラッグ&ドロップを実装するように言われました。それは簡単なドラッグ&ドロップ機能を処理することができるItemTouchHelperという名前の特別なクラスが含まれています。 ListViewの場合は、RecyclerViewに比べてもっと多くのコードを書く必要があります。

ItemTouchHelper item = new ItemTouchHelper(new ItemTouchHelper.Callback() { 

     @Override 
     public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 
      int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; 
      int swipeFlags = 0; 
      return makeMovementFlags(dragFlags, swipeFlags); 
     } 

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

     @Override 
     public void onMoved(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, int fromPos, RecyclerView.ViewHolder target, int toPos, int x, int y) { 
      super.onMoved(recyclerView, viewHolder, fromPos, target, toPos, x, y); 
      Toast.makeText(MainActivity.this, "Moved", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {} 
    }); 

    item.attachToRecyclerView(recyclerView); 
関連する問題