2017-05-05 3 views
-1

Ich habe eine Listview in meiner SolutionActivity-Klasse in Android. Der Adapter füllt die Liste mit Elementen basierend auf Ergebnissen von Benutzereingaben in einer anderen Aktivität. Die Listenansicht kann nur zwei Werte haben, "true" oder "false". Ich habe das ganze Web durchsucht und sehe viele 'getView'-Methoden in einer benutzerdefinierten Adapterklasse, aber ich habe versucht, dies zu implementieren, aber ich konnte es nicht herauszufinden, wie? Habe ich eine separate Klasse nur für meine Adapter schaffen? Oder kann ich es am Ende meiner SolutionActivity hinzufügen? Und wie verwende ich das getView Methode? wie dem auch sei dies mein Code ...Wie ändere ich die Farbe einer Zeile in ListView, abhängig davon, was in jeder Zeile steht?

public void setUserResults() { //displays the bit combination and users services in the listviews 
    ListView serviceNames = (ListView) findViewById(R.id.listofservices); 
    ListView bitResults = (ListView) findViewById(R.id.bitresults); 
    UserInputSet userInputSet = UserInputSet.getInstance(); 
    List<String> userServices = MainActivity.dimensions; 
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, 
      userServices); 
    ArrayAdapter<Boolean> bitArrayAdapter = new ArrayAdapter<Boolean>(this, android.R.layout.simple_list_item_1, 
      CustomUseCase.getBestComboArray()); 
    serviceNames.setAdapter(arrayAdapter); 
    bitResults.setAdapter(bitArrayAdapter); 
} 

ich will grün die Zeile setzen, wenn der Wert von ‚getBestComboArray()‘ wahr ist, sonst rot, wenn es falsch ist. Kann mir jemand eine gute Lösung für dieses Problem vorschlagen? Danke

+0

müssen Sie benutzerdefinierte Adapter dafür verwenden –

+0

@AliAhsan yeh ich weiß, dass ich einfach nicht wissen, wie es zu implementieren, wie ich in der Frage sagte. –

+1

Okay, lassen Sie mich Code in Antwort hinzufügen –

Antwort

2

Individuelle Adapter-Klasse erstellen

public class CustomAdapter extends ArrayAdapter<String> { 
private List<Boolean> greenColor; 
private List<String> Words; 

public CustomAdapter(Activity context, List<String> words,List<Boolean> layoutcolor) 
{ 
        Words = words; 
      this.context = context 
      greenColor = layoutcolor; 

} 

@NonNull 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View view = convertView; 
    if(view==null) 
     view = LayoutInflater.from(getContext()).inflate(R.layout.list_item,parent,false); 


    View view1 = view.findViewById(R.id.colorContainer); 

    if(layoutColor.get(position)){ 
    view1.setBackgroundColor(Color.GREEN); 
    }else{ 
      view1.setBackgroundColor(Color.RED); 
      } 


    TextView textViewdefault = (TextView) view.findViewById(R.id.text_view); 
    textViewdefault.setText(words.get(position)); 

    return view; 

} 
} 

erstellen Layout mit dem Namen list_item und ändert mit Ansichten, die Sie in jeder Zeile

<LinearLayout 
    android:id="@+id/colorContainer" 
    android:layout_width="match_parent" 
    android:layout_toRightOf="@id/image" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 

    > 
<TextView 
    android:id="@+id/text_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    tools:text="text1" 
    android:textSize="18sp" 
    android:paddingTop="16dp" 
    android:layout_marginLeft="16dp" 
    android:textColor="#ffffff" 
    /> 



</LinearLayout> 

Und dann setzen rufen den Adapter Zur Listenansicht

CustomAdapter <String> bitArrayAdapter = new CustomAdapter <String>(this, TextViewList, // TextViewList is the list of text for textview of each row 
CustomUseCase.getBestComboArray()); 

bitResults.setAdapter(bitArrayAdapter); 

Und Sie sind gut zu gehen zeigen wollten, :)

+0

lassen Sie mich wissen, wenn Sie noch Probleme haben –

+0

Ich werde es jetzt testen, Entschuldigung für die späte Antwort –

+0

Hallo, ich bekomme "es gibt keinen Standardkonstruktor in ArrayAdapter " Fehler auf der Konstruktor Sie gaben –

Verwandte Themen