您好,登錄后才能下訂單哦!
要實(shí)現(xiàn)RecyclerView列表項(xiàng)的長(zhǎng)按菜單,可以使用ItemTouchHelper類來(lái)監(jiān)聽RecyclerView的長(zhǎng)按事件,并在長(zhǎng)按事件觸發(fā)時(shí)顯示菜單選項(xiàng)。
以下是實(shí)現(xiàn)步驟:
public class ItemTouchListener extends ItemTouchHelper.Callback {
private Context mContext;
public ItemTouchListener(Context context) {
mContext = context;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
return makeMovementFlags(0, ItemTouchHelper.START | ItemTouchHelper.END);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
// do nothing
}
@Override
public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
if (actionState != ItemTouchHelper.ACTION_STATE_IDLE) {
// show menu
showMenu(viewHolder.itemView);
} else {
// hide menu
hideMenu(viewHolder.itemView);
}
super.onSelectedChanged(viewHolder, actionState);
}
private void showMenu(View itemView) {
// show menu items
}
private void hideMenu(View itemView) {
// hide menu items
}
}
ItemTouchListener itemTouchListener = new ItemTouchListener(context);
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(itemTouchListener);
itemTouchHelper.attachToRecyclerView(recyclerView);
private void showMenu(View itemView) {
PopupMenu popupMenu = new PopupMenu(mContext, itemView);
popupMenu.getMenuInflater().inflate(R.menu.menu_item, popupMenu.getMenu());
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit:
// handle edit action
break;
case R.id.menu_delete:
// handle delete action
break;
}
return true;
}
});
popupMenu.show();
}
通過(guò)以上步驟,就可以實(shí)現(xiàn)RecyclerView列表項(xiàng)的長(zhǎng)按菜單功能。在showMenu方法中可以根據(jù)需求自定義菜單項(xiàng)和相應(yīng)的操作。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。