-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathMainActivity.java
147 lines (114 loc) · 5.17 KB
/
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
package io.github.codefalling.recyclerviewswipedismiss.sample;
import android.app.AlertDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.LinkedList;
import java.util.List;
import io.github.codefalling.recyclerviewswipedismiss.SwipeDismissRecyclerViewTouchListener;
public class MainActivity extends ActionBarActivity {
private void showDialog(String msg){
AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
.setTitle("alert")
.setMessage(msg)
.setCancelable(false)
.create();
alert.setCanceledOnTouchOutside(true);
alert.show();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
final RecyclerView anotherRecyclerView = (RecyclerView) findViewById(R.id.recyclerHorizontalView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
LinearLayoutManager horizontalLayoutManager = new LinearLayoutManager(this);
horizontalLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(layoutManager);
anotherRecyclerView.setLayoutManager(horizontalLayoutManager);
List<String> dataset = new LinkedList<String>();
for (int i = 0; i < 100; i++){
dataset.add("item" + i);
}
final MyAdapter adapter = new MyAdapter(dataset);
recyclerView.setAdapter(adapter);
anotherRecyclerView.setAdapter(adapter);
// Bind touch listener
SwipeDismissRecyclerViewTouchListener listener = new SwipeDismissRecyclerViewTouchListener.Builder(
recyclerView,
new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(View view) {
int id = recyclerView.getChildPosition(view);
adapter.mDataset.remove(id);
adapter.notifyDataSetChanged();
Toast.makeText(getBaseContext(), String.format("Delete item %d",id),Toast.LENGTH_LONG).show();
}
})
.setIsVertical(false)
.setItemTouchCallback(
new SwipeDismissRecyclerViewTouchListener.OnItemTouchCallBack() {
@Override
public void onTouch(int index) {
showDialog(String.format("Click item %d", index));
}
})
.create();
recyclerView.setOnTouchListener(listener);
// set touch listener for recyclerHorizontalView(horizontal swipe to remove)
SwipeDismissRecyclerViewTouchListener verticalListener = new SwipeDismissRecyclerViewTouchListener.Builder(
anotherRecyclerView,
new SwipeDismissRecyclerViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return true;
}
@Override
public void onDismiss(View view) {
int id = recyclerView.getChildPosition(view);
adapter.mDataset.remove(id);
adapter.notifyDataSetChanged();
Toast.makeText(getBaseContext(), String.format("Delete item %d",id),Toast.LENGTH_LONG).show();
}
}).setIsVertical(true).create();
anotherRecyclerView.setOnTouchListener(verticalListener);
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
public List<String> mDataset;
public MyAdapter(List<String> dataset) {
super();
mDataset = dataset;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = View.inflate(viewGroup.getContext(), android.R.layout.simple_list_item_1, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int i) {
viewHolder.mTextView.setText(mDataset.get(i));
}
@Override
public int getItemCount() {
return mDataset.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
public TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView;
}
}
}
}