2016-06-11 104 views
1

的Android RecyclerView傳遞和顯示項目數據我有RecyclerView一個RecyclerViewActivity和數據:取決於條件

 // get a reference to recyclerView 
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 

    // this is data for recyclerview 

     CardData cardData[] = { 
      new CardData("Bread", R.drawable.bread), 
      new CardData("Dairy", R.drawable.dairy), 
      new CardData("Meat", R.drawable.meat) ...} 

連接到不同的活動與簡單的ListView每個CardData。

現在我使用Shared Preferences和布爾變量來檢查每個ListView中是否有一些項目。檢查完成後 - 傳遞true/false值給RecyclerViewActivity:

 SharedPreferences pref = getSharedPreferences("filename", MODE_PRIVATE); 
    Boolean a = pref.getBoolean("key1", false); 
    Boolean b = pref.getBoolean("key2", false); 
    Boolean c = pref.getBoolean("key3", false); 

現在我需要做的 - 是取決於A/B/C值顯示CardData。如果我收到a:true - 需要在我的數據集中顯示一些額外的圖像指示器。事情是這樣的:

 CardData cardData[] = { 
      if (!a) { 
      new CardData("Bread", R.drawable.bread, R.drawable.indicator) 
      } 
      else { 
      new CardData("Bread", R.drawable.bread) }; 

      if (!b) { 
      new CardData("Dairy", R.drawable.dairy, R.drawable.indicator) 
      } 
      else { 
      new CardData("Dairy", R.drawable.dairy}; 

      ... 
      } 

的問題是,我不知道現在在哪裏以及如何正是我可以設置這個條件。裏面CardData像上面它沒有工作 - 給我一個語法錯誤..

任何幫助將不勝感激!

+0

這是我的理解 - 你想添加'CardData'對象的數組,而構造的選擇取決於布爾值A,b,C。正確? – Sufian

+0

是的。我想根據a,b,c的值添加它們 – user5866501

回答

1

問題是,你沒有把它分成更小,更易於管理的步驟。

你能做到這樣:

// initialise the array with size 3 
CardData cardData[] = new CardData[3]; 

// start adding elements now 
// insert first object by checking flag "a" 
if (a) { 
    cardData[0] = new CardData("Bread", R.drawable.bread); 
} 
else { 
    cardData[0] = new CardData("Bread", R.drawable.bread, R.drawable.indicator); 
} 

// insert second object by checking flag "b" 
if (b) { 
    cardData[1] = new CardData("Dairy", R.drawable.dairy); 
} 
else { 
    cardData[1] = new CardData("Dairy", R.drawable.dairy, R.drawable.indicator); 
} 

// and so on... 
+0

我已經根據您的建議更改了我的代碼,現在它已經可以工作了!萬分感謝!!! – user5866501