私は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でアイテムを削除する - Android
- 2. 遅延を伴うRecyclerViewからのアイテムの削除方法
- 3. データソースからアイテムを削除せずにリストからアイテムを削除する - c#
- 4. パネルの削除/空のgridLayout
- 5. jQueryオブジェクトからアイテムを削除する
- 6. LINQ:IQueryableからアイテムを削除する
- 7. リストビューからアイテムを削除する
- 8. Backbone.js:コレクションからアイテムを削除する
- 9. リストからアイテムを削除する
- 10. wininitからアイテムを削除する
- 11. C#コレクションリストオブジェクトからアイテムを削除する
- 12. ビューホルダーからアイテムを削除する
- 13. DropDownListからアイテムを削除する
- 14. Doctrine_Collectionからアイテムを削除する
- 15. バスケットからアイテムを削除する
- 16. リストからアイテムを削除する - C#
- 17. リストからアイテムを削除する
- 18. アイテムを削除してsqliteからデータを削除する方法、およびrecyclerviewで復元する方法はありますか?
- 19. アンドロイドRecyclerviewスライドアニメーションですべてのアイテムを1つずつ削除します
- 20. 削除したアイテムを削除キーで削除する
- 21. ノックアウト - ViewModelからアイテムを削除してもDOMから削除されない
- 22. カスタムレイアウトのRecyclerViewアイテム
- 23. リストボックスからアイテムを削除するとアイテムがカットされるC#
- 24. チェックボックスを使用してリストビューからアイテムを削除する
- 25. リストからアイテムを削除してアイテムを同時に取得する
- 26. タイムアウト後にコレクションからアイテムを削除する
- 27. Android:ListView/ArrayAdapterアクティビティからアイテムを削除する
- 28. CanvasからNULLアイテムを削除するには?
- 29. コレクションからアイテムを検索して削除する
- 30. #1064テーブルからアイテムを削除するとき
このチュートリアルに従うことができます。 https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf#.fpfcua692 –
@ZahidulIslamはい、このチュートリアルでは削除されていません。GridLayout –