[英]Returning data from an activity to another activity and using that data in RecyclerView adapter
[英]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.