2016-04-28 2 views
0

Ich entwickle eine Umfrage/Abstimmung Anwendung in Android Studio 2.0 (API 23).Wie können Sie das Ergebnis der aktivierten "Kontrollkästchen" in einer Aktivität anzeigen, ohne dass in Android Studio Leerzeichen angezeigt werden?

Das Szenario:

Ich habe eine Aktivität, die Felder (Interessengebiet) mit Checkbox darunter zeigt zeigen, dass das bestimmte Feld ausgewählt (hier Felder sind Sport, Unterhaltung, Bildung und Technologie). . Eine Schaltfläche zum Bestätigen, Speichern und Umleiten des Benutzers zu Aktivitäten/Aktivitäten, die er/sie an der Checkbox ausgewählt hat.

Das Problem:

Es ist nicht möglich (oder ist es) alle anzuzeigen, wird „geprüft“ durch den Benutzer in verschiedenen Aktivitäten zur gleichen Zeit angezeigt wird (das Chaos). Oder ist es möglich, ein Format bei einer anderen Aktivität zu erstellen, die Textfelder (leer) hat und zur Laufzeit angezeigt wird, wenn der Benutzer das Kontrollkästchen anklickt und eine Funktion setText() für das Leerzeichen verwendet Textfelder. Dies funktioniert nur, wenn der Benutzer die Kontrollkästchen in einer Sequenz so auswählt, wie er angezeigt wird. Wenn der Benutzer das erste und dritte Feld auswählt, ist das zweite Feld zur Laufzeit ein leerer Bereich (eine Scroll-Ansicht ist hier offensichtlich) .

Bitte geben Sie eine genaue Lösung im Detail. Danke.

+0

Wie erhöht man die Wahrscheinlichkeit, im Detail geeignete Lösungen zu erhalten? - Erster Schritt: Fragen Sie niemals ausdrücklich danach. Schritt 2: Zeigen Sie uns, dass Sie etwas recherchiert haben, bevor Sie fragen (idealerweise durch Hinzufügen des entsprechenden Codes). Erfahren Sie mehr über Fragen in der [Hilfe] (http://stackoverflow.com/help) – 0X0nosugar

+0

@ 0X0nosugar danke, ich werde das behalten im Hinterkopf. Dies war mein erster Beitrag und ich war auch etwas verwirrt. –

+0

@Siddarth Raj - Verwirrt - nun, ich auch. Wenn Sie denken, dass ich ein bisschen unglücklich klang, gebe ich zu, dass Sie Recht haben. Für mich war es so unklar, wie viel du schon weißt und wo genau du steckengeblieben bist - es ist immer einfacher zu helfen, wenn Leute Code zeigen, der (noch) nicht funktioniert, aber erweitert/verbessert werden kann, um ihnen die nächsten Schritte zu zeigen . Danke fürs Beantworten und fröhliche Codierung :-) – 0X0nosugar

Antwort

2

Sie Frage ist ein wenig verwirrend, aber soweit ich verstanden habe, können Sie mit diesem Weg gehen.

Erstellen Sie eine gemeinsame Einstellung. Lassen Sie Benutzer, klicken Sie auf Kontrollkästchen nach Klick auf Absenden-Button, um die Wunsch-Werte werden wie folgt speichern:

public class UserPreference { 


SharedPreferences pref; 

// Editor for Shared preferences 
SharedPreferences.Editor editor; 

// Context 
Context _context; 

// Shared pref mode 
int PRIVATE_MODE = 0; 

// Sharedpref file name 
private static final String PREF_NAME = "user_preference"; 

public static final String isSportsCheck = "isSportsChecked"; 
public static final String isTechnologyCheck = "isTechnologyChecked"; 

public UserPreference(Context context){ 
    this._context = context; 
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
    editor = pref.edit(); 
} 

public void createWork(boolean sports, boolean tech){ 
    editor.putBoolean(isSportsCheck, sports); 
    editor.putBoolean(isTechnologyCheck, tech); 
    editor.commit(); 
} 

public HashMap<String, String> getWorkDetails(){ 
    HashMap<String, String> user = new HashMap<String, String>(); 
    user.put(isSportsCheck, pref.getBoolean(isSportsCheck, false)); 
    user.put(isTechnologyCheck, pref.getBoolean(isTechnologyCheck, false)); 

    return user; 
} 

Jetzt in Ihrer anderen Tätigkeit legte eine Scroll in Parent, dann ein Linear-Layout mit Höhe und Breite wie match_parent. Und dann verschiedene Layouts aus verschiedenen Bereichen wie Technik, Sport.

dann in Java-Klasse:

@Override 
public void onResume(){ 
super.onResume(); 
HashMap<String, String> user = userPreference.getWorkDetails(); 
    boolean sports = user.get(userPreference.isSportsCheck); 
    boolean tech = user.get(userPreference.isTechnologyCheck); 

    if(sports){ 
      sports_layout.setVisibility(View.VISIBLE); 
      load_sports_data(); 
     .......... 

Sie dieses Modell Ansatz nehmen und Lastdaten leicht. Sie können jedoch auch Tab-Layout und dann in OnResume-Methode Setup-Registerkarten basierend auf Benutzerauswahl. Verwenden Sie dann in jedem Register die Recycler-Ansicht.

+0

danke für die Lösung. Ich habe total vergessen, das "shared preferences" -Konzept zu implementieren.Das Hinzufügen verschiedener Layouts ist eine mögliche Lösung, aber ich werde versuchen, eine Bildlaufansicht zu erstellen. –

+0

@SiddharthRaj es scheint, Sie sind ein bisschen verwirrt, da die Frage nicht klar war (völlig verstehen, da Sie ein neues sind), aber der Kommentar scheint eher verwirrend. Warum genau meinen Sie, indem Sie sagen, dass Sie die Scroll-Ansicht hinzufügen. Natürlich müssen Sie scrollview hinzufügen. ScrollView ist nur eine Möglichkeit, dem untergeordneten Layout ein Scroll-Verhalten zu verleihen, das ist es. Sie müssen jedes Layout, Relative, Linear oder Was auch immer zu jedem Inhalt hinzufügen und dann Sichtbarkeit setzen, indem Sie Werte von Shared Preference erhalten. –

0

Sie können also den Wert in String speichern und den Status in booleschen Variablen überprüfen und sie als statisch public deklarieren. Sie können auch einen Zähler setzen, so dass ein angehaktes Kontrollkästchen erhöht wird. Nun zu verschiedenen Aktivitäten, sagen wir Aktivität B, können Sie dynamisch Textfelder oder Textfelder in Ihrer Aktivität erstellen und sie durch statische Variablen initialisieren und deren geprüften Status überprüfen.

Verwandte Themen