【问题标题】:How to implement a single choice alert dialog to each cardview in recyclerview?如何为recyclerview中的每个cardview实现单选警报对话框?
【发布时间】:2019-12-17 14:43:42
【问题描述】:

我是 Android 开发新手。我正在构建一个在 recyclerview 中有卡片视图的应用程序。我想制作一个单选警报对话框列表并处理它们。我正在使用 FirebaseUI 库来填充 recyclerview。

这是我的 ViewHolder 类:

public class FriendListViewHolder extends RecyclerView.ViewHolder{

public CircleImageView friendPhoto;
public TextView friendName;
public CardView friendsCardView;

public FriendListViewHolder(@NonNull final View itemView) {
    super(itemView);

    friendPhoto = itemView.findViewById(R.id.friendProfilePhoto);
    friendName = itemView.findViewById(R.id.friendNameText);
    friendsCardView = itemView.findViewById(R.id.friends_cardview);

    }

}

每当用户点击卡片视图时,alerdialog 就会弹出。但请记住,我需要知道选择了哪个 carview。

【问题讨论】:

    标签: android android-studio android-recyclerview android-cardview


    【解决方案1】:

    我正在尝试但没有测试,概念是这样的,如果不适合你,请告诉我

        public class FriendListViewHolder extends RecyclerView.ViewHolder{
    
        public CircleImageView friendPhoto;
        public TextView friendName;
        public CardView friendsCardView;
    
        public FriendListViewHolder(@NonNull final View itemView) {
            super(itemView);
    
            friendPhoto = itemView.findViewById(R.id.friendProfilePhoto);
            friendName = itemView.findViewById(R.id.friendNameText);
            friendsCardView = itemView.findViewById(R.id.friends_cardview);
    
            friendsCardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    new AlertDialog.Builder(itemView.getContext())
                            .setTitle("Title of the alert dialog")
                            .setMessage("The body of the alert dialog")
    
                            // Specifying a listener allows you to take an action before dismissing the dialog.
                            // The dialog is automatically dismissed when a dialog button is clicked.
                            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    // Continue with delete operation
                                }
                            })
    
                            // A null listener allows the button to dismiss the dialog and take no further action.
                            .setNegativeButton(android.R.string.no, null)
                            .setIcon(android.R.drawable.ic_dialog_alert)
                            .show();
                }
            });
        }
    
    }
    

    尽管参考这些问题RecyclerView onClick, How do I display an alert dialog on Android?

    【讨论】:

      【解决方案2】:

      在您的适配器类中重写 onBindViewHolder 方法,如下所示

              @Override
              protected void onBindViewHolder(@NonNull FriendListViewHolder holder, final int position, @NonNull Model model) { 
      
                  holder.friendsCardView.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          new AlertDialog.Builder(context)
                              .setTitle("CardView Position")
                              .setMessage("CardView Position is " + String.valueOf(position))
                              .setCanceledOnTouchOutside(true)
                              .show();
                      }
                  });
      
              }
      

      上面的代码将显示一个警告对话框,其中包含已单击的 cardView 的位置。希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-18
        • 2018-11-08
        • 2017-09-14
        • 2018-08-27
        • 2018-01-04
        • 2020-07-10
        • 2016-02-07
        • 1970-01-01
        相关资源
        最近更新 更多