2011-08-21 21 views
6

'daki TextView yazı tipi rengini dinamik olarak değiştiriyorum Bir XML belgesini özel bir bağdaştırıcıya bağlıyorum. Listedeki tüm öğeler başlangıçta beyaz yazı tipi rengine sahiptir. XML belgesindeki düğümlerden biri, denetlediğim bir özniteliğe sahiptir ve öznitelik ayarlanmışsa, ListView'deki o öğenin yazı tipi rengini daha koyu bir renge değiştirmek isterim. Başlangıçta çalıştığım kod, ancak listeyi yukarı ve aşağı kaydırırsam, ListView'daki öğeler beyaz kalmalı, bazı nedenlerle otomatik olarak koyu renge dönüşür:, ListView

İşte benim düzen kodum: etiketi ayarlamadan önce hiç

private class CustomAdapter extends BaseAdapter 
{  
    private ArrayList<FilterItem> mData = new ArrayList<FilterItem>(); 
    private LayoutInflater mInflater; 

    public CustomAdapter() { 
     mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    public void addItem(FilterItem item) { 
     mData.add(item); 
    } 

    @Override 
    public int getCount() { 
     return mData.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return mData.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
     ViewHolder holder; 
     FilterItem item = (FilterItem)this.getItem(position); 

     if (convertView == null) 
     { 

      holder = new ViewHolder(); 

      convertView = mInflater.inflate(R.layout.main, null); 
      holder.text = (TextView)convertView.findViewById(R.id.text); 

      convertView.setTag(holder); 

     } else { 
      holder = (ViewHolder)convertView.getTag(); 
     } 

      TextView tvText = holder.text; 

      tvText.setText(item.getTitle()); 

      if (item.Read()) 
      { 
       tv.setTextColor(Color.Gray); 
      } 

     return(convertView); 
    } 
} 

cevap

16

ListView görünümünü yeniden kullanır bu kodu deneyin ve sadece beyazdan griye doğru rengini değiştirmek. Rengi asla beyaza geri döndüremezsiniz. Çalışılan

+0

'u öneririm. çözümü gördükten sonra çok basit görünüyor. Teşekkürler! –

1

Taşı metin ve renk ayarı kodu:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical"> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/text" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:textSize="15dip" 
    android:textColor="#ffffff" 
    android:textStyle="bold" 
    android:padding="5px" 
    /> 
</LinearLayout> 

ve burada benim özel adaptör olduğunu. Eğer convertView olsun getView görebileceğiniz gibi,

if (convertView == null) 
    { 

     holder = new ViewHolder(); 

     convertView = mInflater.inflate(R.layout.main, null); 
     holder.text = (TextView)convertView.findViewById(R.id.text); 
     TextView tvText = holder.text; 
     tvText.setText(item.getTitle()); 
     if (item.Read()) 
     { 
      tv.setTextColor(Color.Gray); 
     } 
     convertView.setTag(holder); 

    } else { 
     holder = (ViewHolder)convertView.getTag(); 

     TextView tvText = holder.text; 
     tvText.setText(item.getTitle()); 
     if (item.Read()) 
     { 
      tv.setTextColor(Color.Gray); 
     } 
    } 
    return(convertView);