0

在我的列表視圖中,我想讓TextViews帶有相應於文本顏色的圖像Drawables。 我嘗試使用下面的代碼,但在文本顯示如預期時,Drawable始終顯示列表中的所有TextView的最後一種顏色 - 直到列表滾動,然後顯示正確的顏色。適配器不能正常工作,直到滾動

@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View row = convertView; 
    if (row == null) { 
     row = inflater.inflate(R.layout.mylayout, parent, false); 
     holder = new ViewHolder(); 
     holder.textView = (TextView) row.findViewById(R.id.myTextView); 
     holder.img = getResources().getDrawable(R.drawable.my_icon); 
     row.setTag(holder); 
    } else { 
     holder = (ViewHolder) row.getTag(); 
    } 

    holder.textView.setText(colors[position]); 

    int color = 0; 
    switch (colors[position]) 
    { 
     case "blue": 
      color = getResources().getColor(R.color.blue); 
      break; 
     case "green": 
      color = getResources().getColor(R.color.green); 
      break; 
     case "red": 
      color = getResources().getColor(R.color.red); 
      break; 
    } 

    holder.img.setColorFilter(color, PorterDuff.Mode.SRC_ATOP); 
    holder.textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, holder.img); 
    return row; 
} 
static class ViewHolder { 
    TextView textView; 
    Drawable img; 
} 

回答

0

爲什麼您要將holder.img指向可繪製圖像。你應該使用視圖和setbackgroundcolour,因爲它

+0

我想創建一個TextView與drawableLeft圖像。 – james

+0

只需放入Log.d並檢查每個位置中變量顏色的值 –

相關問題