2016-06-11 5 views
1

Ich habe einen RecyclerViewActivity und Daten für RecyclerView:Android RecyclerView passiert und Anzeigepositionsdaten unter der Bedingung abhängig

 // 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) ...} 

Jeden CardData unterschiedliche Aktivität verbunden mit einfachen Listview.

Jetzt habe ich Shared Preferences und boolesche Variable verwendet, um zu überprüfen, ob es in jedem ListView einige Elemente gibt. Nach dem Check abgeschlossen - Wahr/Falsch-Wert auf den RecyclerViewActivity passieren:

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

Nun, was ich tun muss - ist CardData angezeigt werden je nach a/b/c Werte. Wenn ich a: true - erhalte, müssen einige zusätzliche Bildindikatoren in meinem Datensatz angezeigt werden. Etwas wie folgt aus:

 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}; 

      ... 
      } 

Das Problem ist, dass ich jetzt nicht, wo und wie genau kann ich diesen Zustand gesetzt. Innerhalb CardData wie oben funktioniert es nicht - gibt mir einen Syntaxfehler ..

Jede Hilfe wird zu schätzen wissen!

+0

Das ist, was ich verstehe - Sie versuchen, das Array hinzuzufügen 'CardData' Objekte zu, während die Auswahl des Konstrukteurs auf dem Wert von booleans abhängt ABC. Richtig? – Sufian

+0

Ja. Und ich möchte sie abhängig von den Werten von a, b, c hinzufügen – user5866501

Antwort

1

Das Problem ist, dass Sie es nicht in kleinere, überschaubare Schritte brechen.

Sie können es auf diese Weise tun:

// 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

Ich habe meinen Code nach Ihrem Vorschlag geändert und es ist jetzt Arbeit! Vielen Dank!!! – user5866501

Verwandte Themen