私はRecyclerView GridLayoutを以下の画像のように持っています しかし、アイテムを削除する方法がわかりません。 LongClickアイテムが表示されたときに表示される新しいImageViewを作成したい場合、この要素をImageViewの上に移動すると、この要素は削除されます。どうか、どうしたらいいですか? recyclerviewチェックthisライブラリに削除するためにスワイプするためRecyclerViewからアイテムを削除するGridLayout
答えて
最初のダウンロードGitHub projectのように、@ zahidulislam。 ファイルを編集します。方法public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive)
y = (int) viewHolder.itemView.getY();
で
public static int y;
および発現:
MainActivity:
public class MainActivity extends AppCompatActivity {
private RecyclerListAdapter adapter;
private ImageView trashImage;
private RecyclerView recyclerView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
trashImage = (ImageView) findViewById(R.id.trash_can);
adapter = new RecyclerListAdapter(this);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setAdapter(adapter);
GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
}
@Override
public void onItemLongClick(final View view, final int position) {
final ImageView trashCan = (ImageView) trashImage.findViewById(R.id.trash_can);
trashCan.setVisibility(View.VISIBLE);
recyclerView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int y = SimpleItemTouchHelperCallback.y;
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
if (y < -50) {
trashCan.setImageDrawable(getResources().getDrawable(R.drawable.trashcan_hover));
} else {
trashCan.setImageDrawable(getResources().getDrawable(R.drawable.trashcan));
}
break;
case MotionEvent.ACTION_UP:
if (y < -50) {
RecyclerListAdapter.mItems.remove(position);
adapter.notifyDataSetChanged();
trashCan.setImageDrawable(getResources().getDrawable(R.drawable.trashcan));
trashCan.setVisibility(View.GONE);
return true;
}
trashCan.setVisibility(View.GONE);
case MotionEvent.ACTION_CANCEL:
break;
}
return false;
}
});
}
}));
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
ItemTouchHelper mItemTouchHelper = new ItemTouchHelper(callback);
mItemTouchHelper.attachToRecyclerView(recyclerView);
}
}
でSimpleItemTouchHelperCallback追加フィールドトップ(ゴミ箱)に落としてください。
しかし、これはドラッグ&ドロップの再位置決めロジックを破壊しますが、それをどのように扱いますか? – Ishaan
@ishaanは決してありません:) –
。 それは非常に素晴らしいapiを持っています。
ありがとうございます。私はImageViewを表示する必要があります。たぶん私はgetXを使ってやる、getY?座標アイテム== ImageViewそのアイテムが削除された場合。 –
このライブラリは、グリッドレイアウトとは関係ありません。私は似たような解決策を探しています、あなたは何かを見つけることができましたか? – Ishaan
@Ishaanそれはまた、gridlayoutのヘルパークラスを持っています。チェックサンプル – androidnoobdev
- 1. アダプタからrecyclerviewアイテムを削除する
- 2. RecyclerView別のクラスからアイテムを削除
- 3. Gridlayoutの一部のアイテムを削除するRecyclerviewに空白が残る
- 4. RecyclerViewでアイテムを削除する - Android
- 5. RecyclerViewのアイテムを削除する
- 6. Android RecyclerView:スワイプでアイテムを削除する
- 7. RecyclerViewアイテムをダイアログボックスから削除します。
- 8. RecyclerViewアイテムからSQLiteの行を削除します。
- 9. 遅延を伴うRecyclerViewからのアイテムの削除方法
- 10. RecyclerViewからオブジェクトを削除する
- 11. RecyclerViewアイテムが削除されない
- 12. データソースからアイテムを削除せずにリストからアイテムを削除する - c#
- 13. MVPを使用してRecyclerViewからアイテムを挿入/削除する方法
- 14. torch.Tensorからアイテムを削除
- 15. ItemsControlからアイテムを削除
- 16. データベースからアイテムを削除
- 17. Kivy Stack-GridLayoutから要素を削除する
- 18. snorkbarでrecyclerviewアイテムを削除するアクションをキャンセルします
- 19. 他のRecyclerViewアイテムからRecyclerViewにアイテムを追加する
- 20. C#コレクションリストオブジェクトからアイテムを削除する
- 21. リストからアイテムを削除する
- 22. バスケットからアイテムを削除する
- 23. リストビューからアイテムを削除する
- 24. テーブルからアイテムを削除する
- 25. コレクションビューからアイテムを削除する
- 26. カスタムアダプタからアイテムを削除するandroid
- 27. リストからアイテムを削除する
- 28. LINQ:IQueryableからアイテムを削除する
- 29. Doctrine_Collectionからアイテムを削除する
- 30. wininitからアイテムを削除する
このチュートリアルに従うことができます。 https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.fpfcua692 –
@ZahidulIslamはい、このチュートリアルでは削除されていません。GridLayout –