2017-09-06 39 views
1

我有兩個RecyclerView適配器。而且,我在這兩個適配器中使用SharedPreferences。android - 如何使用兩個不同的RecyclerViewAdapters之間的共享首選項

在第一個適配器中,我保存了araayList大小的字符串值,如String.valueOf(dataList.size())。共享prefernces第一銜接的代碼是這樣的:

public class ItemRowHolder extends RecyclerView.ViewHolder { 

      protected TextView itemTitle; 

      protected RecyclerView recycler_view_list; 

      protected TextView lblnoOfItems; 


      public ItemRowHolder(View view) { 
       super(view); 

       this.itemTitle = (TextView) view.findViewById(R.id.itemTitle); 
       this.recycler_view_list = (RecyclerView) view.findViewById(R.id.recycler_view_list); 
       this.lblnoOfItems = (TextView) view.findViewById(R.id.lblnoOfItems); 

       sharedPreferences = mContext.getSharedPreferences("DataList", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPreferences.edit(); 

       editor.putString("MyDataList", String.valueOf(dataList.size())); 
       editor.apply(); 
      } 
    } 

而且,我得到的共享偏好值中的另一個適配器內部onCreateViewHolder()。下面是代碼:

@Override 
    public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(viewGroup.getContext()); 
     String value = pref.getString("MyDataList", null); 

     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_single_card, null); 
     SingleItemRowHolder mh = new SingleItemRowHolder(v); 
     return mh; 
    } 

我調試了幾次,發現我得到空當我在第二適配器我收到這裏String value = pref.getString("MyDataList", null)

我在這裏做錯了什麼?另外,有人可以告訴我們這是否是在RecyclerView Adapter中接收共享首選項值的寫入方法。

幫助將不勝感激。

在此先感謝。

回答