1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Preferences dynamisch erweitern

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Prengepower, 16.03.2011.

  1. Prengepower, 16.03.2011 #1
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Hallo!

    Bei meiner Stundenplan-App brauche ich einen PreferencesScreen, bei dem die Fächer als CheckBoxPreference dargestellt werden. Da logischerweise bei jeder Fachrichtung andere Module vorhanden sind, muss diese Liste dynamisch erzeugt werden..

    Ich habe aber leider keinerlei Idee wie ich das umsetzten könnte.
    Kann mir jemand helfen?

    Danke :)
     
  2. FelixL, 16.03.2011 #2
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
  3. Prengepower, 16.03.2011 #3
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Okay das ist ja recht easy, aber wie kann ich das ganze Spielchen halt so machen, das ich das mit CheckBoxPreferences mache? Mir fehlen doch die ganzen Variablen die ich bei den Preferences angeben muss oder seh ich da jetzt was falsch?
     
  4. FelixL, 17.03.2011 #4
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Du meinst den Key für die SharedPrefs? Die musst du dir schon selbst überlegen und dann eben je nach Fachrichtung auswählen. Dann kannst du den Key über setKey() setzen.

    Noch ein Beispiel, mit allen möglichen Arten von Einstellungen:
    Android example - PreferencesFromCode.java - android, checkboxpreference, edittextpreference, listpreference, preferencecategory, preferencescreen
     
  5. Prengepower, 17.03.2011 #5
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Ja aber genau darin liegt mein Problem: die Keys müssen ebenfalls dynamisch miterzeugt werden, weil es darauf ankommt wieviele "unique" Einträge es bei mir gibt..
     
  6. Fr4gg0r, 17.03.2011 #6
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    int index;
    string key = "key"+index;
    index++; ?
     
  7. Prengepower, 17.03.2011 #7
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Mmh ja das ist mir schon klar wie ich das in der Theorie mache, aber ich weiß nicht so recht wie ich das hier machen soll..
     
  8. FelixL, 18.03.2011 #8
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Programmieren musst du schon selbst ;)
    Wenn du fragen oder Probleme mit Android oder Java-spezifischen Sachen hast helfen wir dir gerne, aber ich glaube nicht das dir jemand erklärt wie man überhaupt programmiert. Meine Tipps: mach ein paar Tutorials, probier für deine App einfach mal was aus was funktionieren könnte, aber frag nicht zu allgemeine Fragen ;)

    Ich kenn deine genaue Aufgabe nicht, würde aber behaupten es geht so: du speicherst in deiner App fest für jede Fachrichtung die Fächer die darin vorkommen in einer Liste/Array und vergibst für alle vorkommenden Fächer Keys für sharedPreferences. Beim Erstellen deiner PreferenceActivity musst du nur nachsehen welche Fachrichtung der Benutzer hat, und kannst dann über die Liste raussuchen welche Fächer du brauchst. Dann machst du für jedes Fach in der liste mit dem zugehörigen Key eine Checkbox-Preference. Kann doch nicht so schwer sein? Kannst die Keys ja sogar genau wie die Fächer nennen.
     
    Prengepower bedankt sich.
  9. Prengepower, 21.03.2011 #9
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Ja das könnte ich so machen - will ich aber nicht. Ich möchte eine SQL-Abfrage auf machen, die mir ausgibt, welche Fächer es alle gibt. Daraus soll dann eine Liste der CheckboxPreferences erzeugt werden. Soweit die Theorie..

    Wenn ich das komplett statisch machen würde, dann wäre es kein Problem. Aber ich möchte es dynamisch machen.

    Wie kann ich denn per Java Code ein CheckBoxPreferences-Teil hinzufügen? Habe eine Idee wie ich es machen kann..

    Gruß
     
  10. swordi, 21.03.2011 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du fächer schon in der db hast,

    dann speicher doch den status der checkboxen auch in die db. warum mit preferences, die sowieso teilweise verbuggt sind?
     
    Prengepower bedankt sich.
  11. Prengepower, 21.03.2011 #11
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Mmh ja okay das könnte ich auch machen, aber dann müsste ich trotzdem eine Übersicht machen, bei der ich sagen kann, welche Fächer angezeigt werden soll und welche nicht..

    Hab jetzt mal eine Activity testweise gemacht, die eine Liste mit 20 Checkboxes erzeugt. Allerdings weiß ich jetzt nicht, wie ich auslesen kann ob die Checkbox aktiviert ist oder nicht..

    Code:
    public class Subjectchooser extends Activity{
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    	    super.onCreate(savedInstanceState);
    	    ListView lv = new ListView(this);
    	    LinearLayout ll = new LinearLayout(this);
    	    ll.setOrientation(LinearLayout.VERTICAL);
    	    lv.addView(ll);
    	    
    	    for(int i = 0; i < 20; i++) {
    	    	CheckBox cb = new CheckBox(this);
    	    	cb.setText("I'm dynamic!");
    	    	cb.setId(i);
    	    	cb.setChecked(true);
    	    	ll.addView(cb);
    	    }
    	    this.setContentView(lv);
    	}
    	
    	@Override
    	public void finish() {
    		Intent data = new Intent();
    		
    		data.putExtra("checked", "test");
    		setResult(RESULT_OK, data);
    		super.finish();
    	}
    }
    Wie geht das??
    Bei dieser Variante wirft er mir allerdings einen Fehler: ERROR/AndroidRuntime(409): Caused by: java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView.. Naja wenn ich aber ListView mit ScrollView ersetzte, dann klappt es.. Bin aber damit insgesamt eher unzufrieden, weil ich das vom Design her auch so wollte wie bei den Preferences normal. Hier wird ja jetzt die Checkbox vor dem Text angezeigt und insgesamt wirkt es anders..
     
  12. FelixL, 21.03.2011 #12
    FelixL

    FelixL Ehrenmitglied

    Beiträge:
    4,855
    Erhaltene Danke:
    754
    Registriert seit:
    26.11.2009
    Phone:
    Wileyfox Swift, HTC One M8
    Prengepower bedankt sich.
  13. Prengepower, 21.03.2011 #13
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Ahh ich glaub jetzt hab ichs so einigermaßen ;) Ich versuche mal weiter - hoffentlich pack ichs jetzt :)
     
  14. swordi, 21.03.2011 #14
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    grundlagen muss man sich schon selbst durchlesen. da kann man dir nicht so gut helfen, außer bei detailfragen
     
  15. Prengepower, 21.03.2011 #15
    Prengepower

    Prengepower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    62
    Erhaltene Danke:
    0
    Registriert seit:
    15.03.2011
    Phone:
    HTC Sensation
    Ja habs jetzt auch begriffen und funktioniert auch gut :) danke nochmal auch wenn es ein wenig gedauert hat bis mir der Zusammenhang klar wurde ;)
     

Diese Seite empfehlen