长按回收站视图项目时显示按钮
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 进行通信。
【讨论】:
以上是关于长按回收站视图项目时显示按钮的主要内容,如果未能解决你的问题,请参考以下文章