繁体   English   中英

在alertDialog中单击按钮时如何更新recyclerView

[英]How to update recyclerView when button is clicked in an alertDialog

// RecyclerAdapter(图像的点击监听器)

itemView.setOnClickListener(new View.OnClickListener() {
      @Override
         public void onClick(View v) {
          Integer p = getAdapterPosition()
                Drawable d = imageView.getDrawable();
                ((MainActivity) itemView.getContext()).showOrganisation(p,d);
            }
});

// 主要活动

 public void showOrganisation(Integer p, Drawable d) {

    myDialogOrg.setContentView(R.layout.popup_organisation);
    TextView selectButton = myDialogOrg.findViewById(R.id.popOrgClose);
    ImageView imageView = myDialogOrg.findViewById(R.id.popUpLogo);
    imageView.setImageDrawable(d);

    myDialogOrg.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

    selectButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences pref = v.getContext().getSharedPreferences("CheckBoxStateOrganisationer", MODE_PRIVATE);
            SharedPreferences.Editor editor = pref.edit();

           // Send mysql query to database that a charity is selected
           // Code
                            response{
           // Store State of checkbox
               editor.putBoolean("CheckBoxOrganisationer"+p, true);
               editor.commit();
             }
            ////////////////////////////////
            // update state of checkbox in//
            //////////////////////////////// 

          -> I've added code here <-  

            // Dismiss popup window
            myDialogOrg.dismiss();
        }
    });
    myDialogOrg.show();
}

我试过的是 Fragment.adapter.notifyItemChanged(p); 和 Fragment.adapter.notifyDataSetChanged();

结果是recyclerview中的cardView被清空,显示回收cardView的原始布局。

有没有办法为一个 position 重新加载 recycler.adapter 的“MyViewHolder”,以便卡片视图更新?

// Organisation_Fragment

       Initiates the adapter

当单击 AlertDialog 中的按钮并解除警报时,recyclerView 中特定项目(位置)的复选框应显示为选中状态。

显示在 recyclerView 上的 AlertDialog

在这种情况下,我通常在我的适配器中添加一个对数据更改做出反应的方法

适配器:

    public void updateData(List<String> newList){
        suggestions.clear();
        if(newList!=null) suggestions.addAll(newList);
        notifyDataSetChanged();
    }

您的活动:

private AutoCompleteAdapter adapter;

  @Override
    protected void onCreate(Bundle savedInstanceState) {
adapter = new AutoCompleteAdapter
                            (context, suggestions, etAnswer);
recyclerView.setAdapter(adapter);
}

你的点击监听器

selectButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
         // your other code
            ////////////////////////////////
            // update state of checkbox in//
            //////////////////////////////// 

          -> I've added code here <-  
           adapter.updateData(yourNewList);

        }
    });

使用适配器方法

adapter.notifyItemChanged(position, your Object);

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM