安卓| RecyclerView 项目上的 AlertDialog 单击

标签 android android-recyclerview onclicklistener android-alertdialog onitemclicklistener

我已经实现了一个 RecyclerView。现在我想在单击 RecyclerView 的项目时显示 AlertDialog。我尝试了很多方法,但都没有用。 这是我的适配器类,

public class SearchResultAdapter extends RecyclerView.Adapter<SearchResultAdapter.MyViewHolder> {
private List<Searchresult> resultList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView item1, item2, item3;

    public MyViewHolder(View view) {
        super(view);
        item1 = (TextView) view.findViewById(R.id.item1);
        item2 = (TextView) view.findViewById(R.id.item2);
        item3 = (TextView) view.findViewById(R.id.item3);
    }
}

public SearchResultAdapter(List<Searchresult> resultList) {
    this.resultList = resultList;
}

@Override
public MyViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) {
    final View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.search_result_row, parent, false);
    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    Searchresult result = resultList.get(position);
    holder.item1.setText(result.getItem1());
    holder.item2.setText(result.getItem2());
    holder.item3.setText(result.getItem3());
}

@Override
public int getItemCount() {
    return resultList.size();
}
}

AlertDialog 应该显示 item1、item2 和 item3。请帮我在 RecyclerView 上实现一个 onClickListener。

最佳答案

问题在这里,您还必须将 context 传递给适配器构造函数,如下所示

 public SearchResultAdapter(List<Searchresult> resultList , Context context) {
    this.resultList = resultList;
    this.context = context
    }

在您启动适配器使用的 Activity 中,如下所示

SearchResultAdapter madapter = new SearchResultAdapter (List, this);

然后在你的 onBindViewHolder 中

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    Searchresult result = resultList.get(position);
     holder.item1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //pass the 'context' here
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
            alertDialog.setTitle("Your title");
            alertDialog.setMessage("your message ");
            alertDialog.setPositiveButton("CANCEL", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            alertDialog.setNegativeButton("YES", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                    // DO SOMETHING HERE

                }
            });

            AlertDialog dialog = alertDialog.create();
            dialog.show();
        }
    });
}

关于安卓| RecyclerView 项目上的 AlertDialog 单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45438215/

相关文章:

android - 解析字符串信息android?

android - 在自定义 TextWatcher 中更新 Adapter/RecyclerView

java - OnDraw() 动画仅在项目移动时运行

java - 在 EditText 的 OnClickListener 上调用 PlaceAutocomplete Intent

android - 使用 setOnClickListener 动态创建按钮

android - 当我按下按钮时其他按钮如何禁用?

android - Realm 在 android 中做一个 IN 查询

android - 用于在任何移动平台上开发的 3D 引擎

android - 在 ExpandableListActivity 中处理 child

java - Android recyclerview 中的 recyclerview 项目