长按回收站视图项目时显示按钮

Posted

技术标签:

【中文标题】长按回收站视图项目时显示按钮【英文标题】:Getting button visible on long click of recycler view item 【发布时间】:2021-12-17 13:02:12 【问题描述】:

大家好,我这里有个案子。我有一个活动,里面有一个回收站视图。回收站视图包含卡片视图作为项目。 Activity 上有两个按钮,即删除和取消。

我想要的是,在长按回收站视图的 cardview 项目时,应该会出现删除和取消按钮。此外,我应该能够通过单击删除按钮(即从回收视图中删除项目)来形式删除,而取消按钮只会从卡片视图中删除选择。

我应该遵循什么方法。我可以在回收器视图的适配器类中实现 onLongClick 侦听器,但如何使按钮可见。

请帮忙。

【问题讨论】:

通过实现适配器的自定义监听器让活动监听onLongClick 【参考方案1】:

在 Adapter onBindViewHolder 中尝试这种方法

listview.setOnItemLongClickListener(new OnItemLongClickListener() 
            @Override
            public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                    int position, long id) 
               
               
new AlertDialog.Builder(context)
.setTitle("Delete entry")
.setMessage("Are you sure you want to delete this entry?")

.setPositiveButton("Delete", new DialogInterface.OnClickListener() 
    public void onClick(DialogInterface dialog, int which)  
        
        list.remove(position);
        adapter.notifyDataSetChanged();

    
 )

// A null listener allows the button to dismiss the dialog and take no further action.
.setNegativeButton("cancel", null)
.setIcon(android.R.drawable.ic_dialog_alert)
.show();


                return true; 
            
        );

【讨论】:

不完全是我想要的也可以这样工作。【参考方案2】:

我们可以使用接口在活动和视图持有者之间通信点击监听器。

界面

interface IRecyclerViewListener 
    void onItemClick(int position);

活动

class RecyclerActivty implements IRecyclerViewListener 

//This is user defined method...
public void setADapter() 
RecyclerAdapter adapter = new RecyclerAdapter(this);
recyclerview.setAdapter(adapter);


   public  void onItemClick(int position) 
   //Handle the button visibility here...


RecyclerAdapter

class RecyclerAdapter extends RecyclerView.Adapter<ViewHolder> 

private IRecyclerViewListener iRecyclerViewListener = null;

public RecyclerAdapter (IRecyclerViewListener iRecyclerViewListener) 
  this.iRecyclerViewListener = iRecyclerViewListener;



现在接口对象已经传递给适配器,我们可以通过构造函数从它们传递给视图持有者。在视图单击监听器内的视图持有者中写入 iRecyclerViewListener.onItemClick(getAdapterPosition());。这样我们就可以从适配器到 Activity 进行通信。

【讨论】:

以上是关于长按回收站视图项目时显示按钮的主要内容,如果未能解决你的问题,请参考以下文章

长按回收站查看项目动画

我的回收站视图第二次未在片段中显示

如何在回收站视图android中选择多个项目?

在使用方法创建的回收站视图项目上按下按钮

如何在回收站视图上启用和禁用拖放

在 Android 回收站视图中重新排序项目后,位置未更新