Подтвердить что ты не робот

Как сделать прокрутку для удаления карты в android с помощью библиотеки поддержки

Привет, я использую библиотеку поддержки android.support.v7.widget.CardView для достижения функциональности cardview в приложении для Android. Я также хочу, чтобы удалять и удалять функциональность.

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_gravity="center"
    android:layout_width="200dp"
    android:layout_height="200dp"
    card_view:cardCornerRadius="4dp">

    <TextView
        android:id="@+id/info_text"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</android.support.v7.widget.CardView>

Как добиться прокрутки для удаления функциональности в нем?

Спасибо заранее.

4b9b3361

Ответ 1

Я адаптировал romannurik Android-SwipeToDismiss, чтобы сделать именно это.

Код находится в github с образцом приложения woking и состоит из:

  • Подкласс RecyclerView.OnItemTouchListener, который слушает прикосновение к событиям и обнаруживает, когда элемент прокручивается, анимируя его соответствующим образом.
  • A SwipeListener, который вызывается для того, чтобы узнать, может ли элемент быть уволен и снова вызван, когда элементы отклоняются.

Чтобы использовать его, следуйте инструкциям на github или просто скопируйте класс SwipeableRecyclerViewTouchListener в свой проект и используйте его следующим образом:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mItems = new ArrayList<>(30);
    for (int i = 0; i < 30; i++) {
        mItems.add(String.format("Card number %2d", i));
    }

    mAdapter = new CardViewAdapter(mItems);

    mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);

    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
    mRecyclerView.setAdapter(mAdapter);

    SwipeableRecyclerViewTouchListener swipeTouchListener =
            new SwipeableRecyclerViewTouchListener(mRecyclerView,
                    new SwipeableRecyclerViewTouchListener.SwipeListener() {
                        @Override
                        public boolean canSwipe(int position) {
                            return true;
                        }

                        @Override
                        public void onDismissedBySwipeLeft(RecyclerView recyclerView, int[] reverseSortedPositions) {
                            for (int position : reverseSortedPositions) {
                                mItems.remove(position);
                                mAdapter.notifyItemRemoved(position);
                            }
                            mAdapter.notifyDataSetChanged();
                        }

                        @Override
                        public void onDismissedBySwipeRight(RecyclerView recyclerView, int[] reverseSortedPositions) {
                            for (int position : reverseSortedPositions) {
                                mItems.remove(position);
                                mAdapter.notifyItemRemoved(position);
                            }
                            mAdapter.notifyDataSetChanged();
                        }
                    });

    mRecyclerView.addOnItemTouchListener(swipeTouchListener);
}

Ответ 2

Существует новый подход для жестового удаления жестов в android support v7 API. Имя класса называется ItemTouchHelper.

г. Пол Берк написал удивительный пример того, как реализовать эту функцию. См. Ссылку .