RecyclerView是最近很火的一个控件,他已经开始逐渐的取代listView和GriView这两个控件,主要是在于它强大的功能和方便的使用方式,而且配合SwipeRefreshLayout这个控件同时可以实现上拉加载、下拉刷新等等高级功能,效果也很是不错。今天我们就来讲一讲简单通过RecyclerView滑动删除条目的功能。
以前的相关博客传送门:
UI控件–RecyclerView(1)
UI控件–RecyclerView(2)
UI控件–SwipeRefreshLayout
效果图图下:
这里的滑动删除主要借助了ItemTouchHelper这个类,代码如下:
public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout swipeRefreshLayout;
private RecyclerView recyclerView;
private List<String> dataList;
private MyAdapter adapter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void initData() {
dataList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
dataList.add("数据" + i);
}
}
private void initView() {
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
swipeRefreshLayout.setColorSchemeResources(R.color.color1, R.color.color2,
R.color.color3, R.color.color4);
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.VERTICAL, false);
adapter = new MyAdapter(getApplicationContext(), dataList);
recyclerView.setLayoutManager(manager);
recyclerView.setAdapter(adapter);
itemTouchHelper.attachToRecyclerView(recyclerView);
swipeRefreshLayout.setOnRefreshListener(this);
}
ItemTouchHelper itemTouchHelper=new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT|ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
//处理拖动事件
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//处理滑动事件
int poistion=viewHolder.getAdapterPosition();
dataList.remove(poistion);
adapter.notifyItemRemoved(poistion);
}
});
@Override
public void onRefresh() {
for (int i = 0; i < 20; i++) {
dataList.add("数据" + i);
}
adapter.notifyDataSetChanged();
swipeRefreshLayout.setRefreshing(false);
}
}