2016-09-30 12 views
-2

Ich bin neu bei Android und Java. Ich möchte den Text der 3. Zeile (nicht jede dritte Zeile) in der ListView rot machen.Ändern Sie die Textfarbe einer bestimmten Zeile in ListView

ArrayList<String> weekInfoList = new ArrayList<>(); 
weekInfoList.add("first row"); 
weekInfoList.add("second row"); 
weekInfoList.add("third row"); 

ArrayAdapter arrayAdapter1 = new ArrayAdapter(MainActivity.this, R.layout.list_item2, weekInfoList); 
weeklyListView.setAdapter(arrayAdapter1); 

weeklyListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> a, View v, int position, long id) { 

    // intent to next activity 
    } 
}); 

Bitte helfen Sie mir.

+0

sollten Sie stattdessen Recyclerview verwenden –

+4

Überprüfen Sie diese Antwort http://stackoverflow.com/questions/13109840/android-alternate-row-colors-in-listview –

Antwort

0

In Ihrer Adapter-Klasse, können Sie mehr als ein Element haben angezeigt, wenn Sie also android.support.v4 verwenden, als es sein wird,

holder.thirdTextview.setTextColor(ContextCompat.getColor(activity, R.color.red)); 
1

Sie können Ihre eigenen ArrayAdapter anstelle der Verwendung des Standard erstellen Überschreiben Sie dann die Methode getView, um die Farbe abhängig von der Zeilenposition festzulegen.

public class CustomAdapter extends ArrayAdapter { 
    public CustomAdapter(Context context, int resource) { 
     super(context, resource); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // check position 
     // if every 3rd row, set color 

     // return the modified convertView 
    } 
} 
1

können Sie BaseAdapter oder ArrayAdapter verwenden als @ginomempin vorgeschlagen. und überschreiben getView Methode davon.

Nun, wie Sie für jede dritte Zeile erwähnt, die Sie Textfarbe ändern möchten, können Sie Folgendes tun.

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

    LayoutInflater inf = (LayoutInflater) parent.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    final Holder vh; 
    if (itemLayoutView == null) { 
     vh = new Holder(); 
     itemLayoutView = inf.inflate(R.layout.custom_layout, 
        null); 

     vh.textview = (TextView) itemLayoutView 
        .findViewById(R.id.textview); 
     temLayoutView.setTag(vh); 
    } else { 
     vh = (Holder) itemLayoutView.getTag(); 
    } 

    if(position%3==0){ 
     holder.textview.setTextColor(Color.parseColor("#ff0000")); 
    }else{ 
     holder.textview.setTextColor(Color.parseColor("#666666")); 
    } 

    return convertView; 
} 

Weitere Informationen darüber, wie benutzerdefinierte verwenden Adapter siehe This und This

Glücklich Codierung.

0

Da ich sehr neu in der Programmierung bin, habe ich versucht, benutzerdefinierte Adapter zu vermeiden, aber scheint, als müssten wir es verwenden.

Die alternativen Antworten sind sehr kurz. Also hier angehefte ich meine Lösung für mehr Detailreferenz.

ArrayAdapter customAdapter = new MySimpleArrayAdapter(getApplicationContext(),weekInfoList); 
weeklyListView.setAdapter(customAdapter); 

public class MySimpleArrayAdapter extends ArrayAdapter { 
    private final Context context; 
    private final ArrayList<String> values; 

    public MySimpleArrayAdapter(Context context, ArrayList<String> values) { 
     super(context, -1, values); 
     this.context = context; 
     this.values = values; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.list_item2, parent, false); 
     TextView textView = (TextView) rowView.findViewById(R.id.weeknumber2); 
     textView.setText(values.get(position)); 

     if (position==2){ 
      textView.setTextColor(Color.RED); 
     } 

     return rowView; 
    } 
} 

Dank Surajs Lösung https://stackoverflow.com/a/13109854/2466516.

Verwandte Themen