RecyclerView控件补充

来源:互联网 发布:如何下载pdf软件 编辑:程序博客网 时间:2024/06/02 04:50
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);    }}
0 0
原创粉丝点击