【问题标题】:I have an activity with recycler view adapter class, when button clicked in adapter class I want to refresh the main activity我有一个带有回收器视图适配器类的活动,当在适配器类中单击按钮时,我想刷新主要活动
【发布时间】:2017-07-24 05:41:04
【问题描述】:

我有一个 RecyclerView.Adapter 类的活动。 RecyclerView 包含按钮。单击该按钮时,我想更改主活动中定义的值并将其显示在也定义在主活动中的 TextView 中,否则我想刷新活动。

我已经尝试了一些代码,例如:

【问题讨论】:

  • 试试 Activity.recreate()?
  • 是重新创建内置方法吗?
  • 使用 startActivityResult 并在 mainActivity 中的 onActivityResult 上得到结果
  • 我想你的设计有问题。在大多数情况下,您不得自己重新创建 Activity。你能澄清一下你需要这个的目的是什么吗?
  • 将活动实例发送到适配器类。在活动类中编写公共方法。在该方法中更改 textview 中的值或刷新单击按钮的活动。

标签: android android-recyclerview


【解决方案1】:
YourActivity extends Activity implements YourAdapter.ClickCallback{

@override
oncreate(Bundle bundle){
 // initialize views 
 YourAdapter adapter = new YourAdapter(this);
 // do something with your adapter
}

@Override
public void updateView(){
//update your views here
}   

}

//In Recycler Adapter pass ClickCallBack As parameter
class YourAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

 private ClickCallBack clickCallBack;

 public YourAdapter(ClickCallBack clickCallBack){
 this.clickCallBack=clickCallBack;
 }

 //ClickCallback Interface
interface ClickCallBack {
 void updateView();
}

 //In your ButtonClick
  clickCallBack.updateView();

}

您也可以在updateView方法中添加参数。

【讨论】:

    【解决方案2】:

    通过构造函数传递这些 TextView 的实例并更新 Adaptor 中的值。这将是最简单的方法。

    【讨论】:

      【解决方案3】:

      在这种情况下,您不需要重新创建 Activity。最好的解决方案是:

      1. 声明一个接口。
      2. 在 Activity 中实现(此处实现对 TextView 等的更新)。
      3. 将实现接口的对象传递给您的适配器。
      4. 在适配器中调用此接口上的方法。

      这是一个例子: https://stackoverflow.com/a/32720879/2528967

      【讨论】:

        猜你喜欢
        • 2016-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-09
        • 1970-01-01
        • 1970-01-01
        • 2019-04-28
        相关资源
        最近更新 更多