• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.android.settings.notification.history;
2 
3 import android.annotation.Nullable;
4 import android.content.Context;
5 import android.util.AttributeSet;
6 
7 import androidx.recyclerview.widget.DividerItemDecoration;
8 import androidx.recyclerview.widget.ItemTouchHelper;
9 import androidx.recyclerview.widget.LinearLayoutManager;
10 import androidx.recyclerview.widget.RecyclerView;
11 
12 public class NotificationHistoryRecyclerView extends RecyclerView {
13 
14     private static final String TAG = "HistoryRecyclerView";
15 
16     private OnItemSwipeDeleteListener listener;
17 
NotificationHistoryRecyclerView(Context context)18     public NotificationHistoryRecyclerView(Context context) {
19         this(context, null);
20     }
21 
NotificationHistoryRecyclerView(Context context, @Nullable AttributeSet attrs)22     public NotificationHistoryRecyclerView(Context context, @Nullable AttributeSet attrs) {
23         this(context, attrs, 0);
24     }
25 
NotificationHistoryRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle)26     public NotificationHistoryRecyclerView(Context context, @Nullable AttributeSet attrs,
27             int defStyle) {
28         super(context, attrs, defStyle);
29 
30         setLayoutManager(new LinearLayoutManager(getContext()));
31         addItemDecoration(new DividerItemDecoration(getContext(), LinearLayoutManager.VERTICAL));
32         ItemTouchHelper touchHelper = new ItemTouchHelper(
33                 new DismissTouchHelper(0, ItemTouchHelper.START | ItemTouchHelper.END));
34         touchHelper.attachToRecyclerView(this);
35         setNestedScrollingEnabled(false);
36     }
37 
setOnItemSwipeDeleteListener(OnItemSwipeDeleteListener listener)38     public void setOnItemSwipeDeleteListener(OnItemSwipeDeleteListener listener) {
39         this.listener = listener;
40     }
41 
42     private class DismissTouchHelper extends ItemTouchHelper.SimpleCallback {
43 
DismissTouchHelper(int dragDirs, int swipeDirs)44         public DismissTouchHelper(int dragDirs, int swipeDirs) {
45             super(dragDirs, swipeDirs);
46         }
47 
48         @Override
onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target)49         public boolean onMove(RecyclerView recyclerView, ViewHolder viewHolder, ViewHolder target) {
50             // Do nothing.
51             return false;
52         }
53 
54         @Override
onSwiped(ViewHolder viewHolder, int direction)55         public void onSwiped(ViewHolder viewHolder, int direction) {
56             if (listener != null) {
57                 listener.onItemSwipeDeleted(viewHolder.getAdapterPosition());
58             }
59         }
60     }
61 
62     public interface OnItemSwipeDeleteListener {
onItemSwipeDeleted(int position)63         void onItemSwipeDeleted(int position);
64     }
65 }