簡體   English   中英

如何在另一個活動中從一個活動接收(放置)數據到recyclerview適配器

[英]How to receive (put) data from one activity to recyclerview adapter in another activity

我有一個帶標簽的活動,在這樣的標簽 - recyclerview中。 當我點擊recyclerview中的項目時,打開另一個(詳細)活動。 詳細活動我有“收藏”按鈕,我想在適配器中發送布爾值。 我的問題是:如何將數據從詳細活動傳遞到recyclerview的適配器。 問題是詳細的活動沒有適配器的實例,我沒有設置自定義監聽器到適配器。

我試着實現界面

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

和覆蓋方法onPause詳細活動

@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時,沒有任何反應

使用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適配器YourAppName.getInstance().source不使用mSource列表;

然后轉到你的detailActivity onPause()

刪除舊的interfaceMethod並寫入此內容

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

當你在onResume();返回你的Activity調用adapter.notifySetDataChanged() onResume();

它會對你有用。

首先,假設當您的“詳細活動”彈出時,單擊“收藏夾”將布爾值設置為“true”。 所以在那之后,你將關閉你的“詳細活動”,所以當你點擊“收藏”時,你應該在你的“主要活動”中獲得recyclerView並調用notifyItemChanged()在你的數據源中將你的值設置為“true”。 您可以編寫“get()”方法,在“主要活動”中獲取recyclerView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM