Android RecyclerView (四)初學,實現長按刪除一個Item.
阿新 • • 發佈:2019-01-11
在上一篇中,我學到了如何給RecyclerView新增Item監聽器,在這裡,我想做到類似於可以長按某個Item然後彈出一個選單,選擇刪除這個Item的功能。這裡的程式碼我們還是使用前面寫的程式碼.
PopupMenu繫結一個menu然後進行顯示。
首先,我們在MyAdapter中先寫好刪除Item的方法,
public void removeItem(int pos){
infos.remove(pos);
notifyItemRemoved(pos);
}
我們這裡傳入一個位置,就是要刪除的Item的位置.然後移除它就可以了。
在menu資料夾下新增一個menu_item.xml的佈局檔案
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/removeItem"
android:title="刪除"
app:showAsAction="never"
></item>
</menu>
這裡我們只有一個item就是用於顯示刪除選項。
然後在我們的MainActivity中新增如下程式碼
public void showPopMenu(View view,final int pos){
PopupMenu popupMenu = new PopupMenu(this,view);
popupMenu.getMenuInflater().inflate(R.menu.item_menu,popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
myAdapter.removeItem(pos);
return false;
}
});
popupMenu.setOnDismissListener(new PopupMenu.OnDismissListener() {
@Override
public void onDismiss(PopupMenu menu) {
Toast.makeText(getApplicationContext(), "關閉PopupMenu", Toast.LENGTH_SHORT).show();
}
});
popupMenu.show();
}
}
在MainActivity中我們添加了一個方法,這個方法的作用就是show出來剛才我們設定的那個選單佈局,
在這裡我們傳入了一個View 和一個int pos整形的位置引數。
上篇文章中,我們設定Item監聽器的時候有一個 LongClickListener的方法,就是來獲取長按的點選事件。
myAdapter.setItemOnClickListener(new MyAdapter.OnItemOnClickLisener() {
@Override
public void onItemOnClickListener(View view, int pos) {
Toast.makeText(MainActivity.this, "點選"+pos, Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongOnClickListener(View view, int pos) {
showPopMenu(view,pos);
}
});
然後在這裡呼叫我們寫好的這個方法,傳入點選的View和他的位置,就可以做到刪除的功能了。