如何在另一个活动中从一个活动接收(放置)数据到recyclerview适配器

时间:2017-04-10 18:54:42

标签: android callback android-recyclerview adapter

我有一个带标签的活动,在这样的标签中 - recyclerview。当我点击recyclerview中的项目时,打开另一个(详细)活动。在详细的活动中我有"最喜欢"按钮,我想在适配器中发送布尔值。我的问题是:如何将数据从详细活动传递到recyclerview的适配器。问题是详细的活动没有适配器的实例,我没有设置自定义监听器到适配器。

我尝试实现接口

public interface OnFavoriteListener {
 void changeIcon(int position, boolean favorite);
}

和覆盖方法onPause in detailed activity

@Override
public void onPause() {
    super.onPause();
    if (mFavoriteListener != null) {
        mFavoriteListener.changeIcon(mPosition, mFavorite);            
    }
}

然后在我的适配器中实现监听器

@Override
public void changeIcon(int position, boolean favorite) {        
    mResource.get(position).setFavorite(favorite);
}

当我从详细活动返回到recyclerview时没有任何反应

2 个答案:

答案 0 :(得分:0)

使用YourAppName创建一个应用程序类

public class YourAppName extends Application {


private static YourAppName mInstance;
private static ArrayList<YourModel> source; //This is your mSourceList

 @Override
    public void onCreate() {
        super.onCreate();

        setmInstance(this); //this is a setter for mInstance value
}

 public static synchronized YourAppName getInstance() {
        return mInstance;
    }
     public static void setmInstance(YourAppName mInstance) {
        YourAppName.mInstance = mInstance;
    }

在您的应用中创建此类并定义源值后;

在您的活动onCreate中调用此

YourAppName.getInstance().source = mSource;

并使用YourAppName.getInstance().source设置您的recyclerView适配器,而不是使用mSource列表;

然后转到你的detailActivity onPause()

删除旧的interfaceMethod并写下此

YourAppName.getInstance.source.get(position).setFavorite(favorite);

adapter.notifySetDataChanged()

中返回您的活动电话onResume();

它适合你。

答案 1 :(得分:0)

首先,假设当您的“详细活动”弹出时,单击“收藏夹”将布尔值设置为“true”。所以在那之后,你将关闭你的“详细活动”,所以当你点击“收藏”时,你应该在你的“主要活动”中获得recyclerView并调用notifyItemChanged()在你的数据源中将你的值设置为“true”。您可以编写“get()”方法,将“recyclerView”置于“主要活动”中。