為RecyclerView新增優雅的點選事件、長按事件
阿新 • • 發佈:2018-12-18
本篇參考:Hugo的文章-Getting your clicks on RecyclerView
效果如下
一、完整的點選、長按事件支援類
先要準備一份
resources
res -> values -> ids.xml -><?xml version="1.0" encoding="utf-8"?> <resources> <item name="item_click_support" type="id" /> </resources>
// 2. 具體的支援類
二、使用方式
可在
setAdapter()
之後呼叫
// 點選
ItemClickSupport.addTo(rv).setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override public void onItemClicked(RecyclerView recyclerView, int position, View v) {
Toast.makeText(MainActivity.this, mDatas.get(position), Toast.LENGTH_SHORT).show();
}
});
// 長按
ItemClickSupport.addTo(rv).setOnItemLongClickListener(new ItemClickSupport.OnItemLongClickListener() {
@Override public boolean onItemLongClicked(RecyclerView recyclerView, int position, View v) {
Toast.makeText(MainActivity.this, "長按" + mDatas.get(position) + "已刪除", Toast.LENGTH_SHORT).show();
// 需要自己處理position在集合中的位置(需考慮頭、身、腳佈局數量)
mDatas.remove(position);
if (lastVisible + 1 == mAdapter.getItemCount()) {
addmore();
}
mAdapter.notifyItemRemoved(position);
// 消耗事件
return true;
}
});