简体   繁体   English

Android | RecyclerView项目上的AlertDialog单击

[英]Android | AlertDialog on RecyclerView Item Click

I have implemented a RecyclerView. 我已经实现了RecyclerView。 Now I want to display an AlertDialog when an item of RecyclerView is clicked. 现在,我想在单击RecyclerView的项目时显示AlertDialog。 I tried many ways and none of them worked. 我尝试了很多方法,但没有一种方法奏效。 Here is my adapter class, 这是我的适配器类,

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();
}
}

The AlertDialog should display item1,item2 and item3.Please help me to implement an onClickListener on RecyclerView. AlertDialog应该显示item1,item2和item3。请帮我在RecyclerView上实现onClickListener。

problem is here , you have to also pass context to the adapter constructor like given below 问题在这里,您还必须将context传递给适配器构造函数,如下所示

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

in your Activity where you initiate adapter use like below 在您的Activity中,您启动适配器使用,如下所示

SearchResultAdapter madapter = new SearchResultAdapter (List, this);

then in your onBindViewHolder 然后在你的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();
        }
    });
}

try this creat one class RecyclerItemClickListener like this 试试这个创建一个类RecyclerItemClickListener就像这样

  package com.ncrypted.recyclerviewwithindex;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;


public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
    private OnItemClickListener mListener;

    public interface OnItemClickListener {
        public void onItemClick(View view, int position);

        public void onLongItemClick(View view, int position);
    }

    GestureDetector mGestureDetector;

    public RecyclerItemClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener) {
        mListener = listener;
        mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return true;
            }

            @Override
            public void onLongPress(MotionEvent e) {
                View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                if (child != null && mListener != null) {
                    mListener.onLongItemClick(child, recyclerView.getChildAdapterPosition(child));
                }
            }
        });
    }

    @Override
    public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
        View childView = view.findChildViewUnder(e.getX(), e.getY());
        if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
            mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
            return true;
        }
        return false;
    }

    @Override
    public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) {
    }


    @Override
    public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
    }
}

attach click lister to recyclerview like this 将click lister附加到像这样的recyclerview

        indexRecyclerView.addOnItemTouchListener(
            new RecyclerItemClickListener(MainActivity.this, indexRecyclerView, new RecyclerItemClickListener.OnItemClickListener() {

                @Override
                public void onItemClick(View view, int position) {
                    // show your alert Dailog here
                   }

                @Override
                public void onLongItemClick(View view, int position) {

                }
            })
    );

Use below code for open alert dialog; 使用以下代码打开警报对话框;

  holder.item1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
                builder1.setMessage("Do you want to remove ?");
                builder1.setCancelable(true);

                builder1.setPositiveButton(
                        "Yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) 
                             {                        
                         //Do your code...
                               }
                        });

                builder1.setNegativeButton(
                        "No",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });

                AlertDialog alert11 = builder1.create();
                alert11.show();
            }
        });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 单击AlertDialog项目列表时,在RecyclerView布局之间切换 - Switch between RecyclerView layouts when click on AlertDialog item list 基于第一个Alertdialog列表android的第二个AlertDialog列表项单击 - Second AlertDialog list item click based on the first Alertdialog list android Android Robolectric点击RecyclerView项目 - Android Robolectric Click RecyclerView Item 如何在android中的recyclerView行中单击按钮以打开alertDialog? - How to open a alertDialog on click of the button in the row of a recyclerView in android? Alertdialog膨胀RecyclerView android - Alertdialog inflating RecyclerView android 在 RecyclerView Item 上实现点击监听器 android - Implement Click Listener On RecyclerView Item android Android 访问 TextView 值在回收站查看项目点击 - Android Access TextView Value On RecyclerView Item Click Android - 长按 RecyclerView 项目和 ContextMenu - Android - Long Click on RecyclerView item and ContextMenu Android Firebase自定义RecyclerView项目单击问题 - Android Firebase custom RecyclerView item click issue 如何实现Android Recyclerview项目单击和复选框项目单击? - How to implement Android Recyclerview item click AND checkbox item click?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM