Preferences dynamisch erweitern

P

Prengepower

Ambitioniertes Mitglied
0
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 :)
 
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?
 
Mir fehlen doch die ganzen Variablen die ich bei den Preferences angeben muss oder seh ich da jetzt was falsch?

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
 
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..
 
int index;
string key = "key"+index;
index++; ?
 
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..
 
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.
 
  • Danke
Reaktionen: Prengepower
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ß
 
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?
 
  • Danke
Reaktionen: Prengepower
swordi schrieb:
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?

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..
 
Ahh ich glaub jetzt hab ichs so einigermaßen ;) Ich versuche mal weiter - hoffentlich pack ichs jetzt :)
 
grundlagen muss man sich schon selbst durchlesen. da kann man dir nicht so gut helfen, außer bei detailfragen
 
Ja habs jetzt auch begriffen und funktioniert auch gut :) danke nochmal auch wenn es ein wenig gedauert hat bis mir der Zusammenhang klar wurde ;)
 

Ähnliche Themen

M
  • maksimilian
Antworten
3
Aufrufe
1.122
maksimilian
M
T
Antworten
1
Aufrufe
850
jogimuc
J
T
Antworten
3
Aufrufe
1.065
jogimuc
J
Zurück
Oben Unten