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

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

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

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

请帮忙。

【问题讨论】:

  • 通过实现适配器的自定义监听器让活动监听onLongClick

标签: android json android-recyclerview


【解决方案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 进行通信。

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 2021-11-05
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多