2017-06-05 1 views
1

In einem benutzerdefinierten Array-Adapter habe ich eine Liste der Zeichenfolge Werte entweder "wahr" oder "falsch".Android Switch-Schalter Tasten bei Iteration

public class CustomFriendList extends ArrayAdapter<String> { 

private final Activity context; 
private List<String> friendName = new ArrayList<String>(); 
private List<String> backchatable = new ArrayList<String>(); 


public CustomFriendList(Activity context, List<String> friendName, List<String> backchatable){ 
    super(context, R.layout.fragment_friend_list_item, friendName); 
    this.context = context; 
    this.friendName = friendName; 
    this.backchatable = backchatable; 
} 

@Override 
public View getView(int position, View view, ViewGroup parent) { 
    LayoutInflater inflater = context.getLayoutInflater(); 
    View rowView= inflater.inflate(R.layout.fragment_friend_list_item, null, true); 
    TextView friend = (TextView) rowView.findViewById(R.id.friendName); 
    Switch switchBackChat = (Switch) rowView.findViewById(R.id.on_off_backchatable); 

    friend.setText(friendName.get(position)); 

    for (String ele : backchatable) { 
     //System.out.println(ele.toString()); 
     if(ele.equals("false")){ 
      switchBackChat.setChecked(false); 
     }else if(ele.equals("true")){ 
      switchBackChat.setChecked(true); 
     } 
    } 

    return rowView; 
} 


} 

Ich bin auf der Suche nach dem Zustand der Schalter nach den Werten "wahr" oder "falsch".

Der obige Code schaltet jedoch alle Schalter in der benutzerdefinierten ListView und nicht die jeweiligen an einer bestimmten Position in der ListView.

+0

Können Sie bitte Ihre gesamte getView-Methode posten? Wie @Pavneet_Singh vorgeschlagen hat, überprüfen Sie die Zeichenfolgenwerte nicht korrekt (verwenden Sie stattdessen ele.equals ("false"), da dies die korrekte Methode zum Überprüfen eines Zeichenfolgenwerts in Java ist). –

+0

Der Check von == zu .equals ist korrekt. Die einzelnen Schalter werden jedoch nicht entsprechend geändert. Sie sind alle zusammen geändert. – Jupiter

Antwort

2

Verwenden Sie ele.equals ("false") und ele.equals ("true") in den if-Anweisungen oder verwenden Sie boolean anstelle von String-Werten.

Und warum setzen Sie den überprüften Status beim Iterieren durch das backchatable-Array? Dabei spielt nur der letzte String des Arrays eine Rolle und wenn der letzte String "false" ist, wird der Schalter nicht überprüft und wenn der letzte String "wahr" ist, wird der Schalter überprüft.

+0

Das ist genau das Problem. Aber wie kann man die Schalter dann unabhängig wechseln? Ich habe versucht, die ListView-Elemente, die eine textView und den Switch enthalten, zusammenhängend zu setzen, aber weil ich nicht in der Lage war, sie aus einer gemeinsamen Liste zu aktualisieren, so habe ich zwei Listen erstellt. – Jupiter

+0

Können wir noch mehr Code sehen? – AppPhil

+0

Überprüfen Sie die Änderung. Im Wesentlichen versuche ich in jede listView-Zeile die Kombination des "friend name" in der textView zu setzen und den Schalter auf "true/false" zu stellen. Leider muss ich diesen Prozess ausführen, um die Daten aus zwei Listen zu extrahieren, weil von einem JSONObject I Es kann keine einzelne Liste erstellt werden, mit der dieser benutzerdefinierte Arrayadapter beim Rendern der listView arbeiten kann. – Jupiter