2014-05-20 80 views
3

我有一個customlistadapter如下:如何更改listview的特定項目的顏色?

public class CustomListViewAdapter2 extends ArrayAdapter<RowItem> { 
    List<Integer> baseOnThis; 
    public CustomListViewAdapter2(Context context, int resourceId, 
     List<RowItem> items, ArrayList<Integer> ids) { 
    super(context, resourceId, items); 
    this.context = context; 
    baseOnThis= ids; 
} 

/* private view holder class */ 
private class ViewHolder { 
    TextView firstHemistich; 
    TextView SecondHemistich; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 
    RowItem rowItem = getItem(position); 


    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 

     convertView = mInflater.inflate(R.layout.hemistich_rows, null); 
     holder = new ViewHolder(); 
        holder.firstHemistich = (TextView) convertView 
       .findViewById(R.id.title); 
     holder.SecondHemistich = (TextView) convertView 
       .findViewById(R.id.desc); 

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

    holder.firstHemistich.setText(rowItem.getTitle()); 
    holder.SecondHemistich.setText(rowItem.getDesc()); 

    return convertView; 
} 

現在我需要拯救的「baseOnThis」更改列表視圖項的顏色,但我不能在ArrayList中的數據庫價值基礎。有什麼想法,我應該怎麼做? 請讓我知道,如果我的問題是錯誤的,不減去我

+0

把簡單的計劃回答您的getView方法內。 –

回答

2

試試這個

if(position == 3){ 
     holder.SecondHemistich.setTextColor(this.context.getResources().getColor(R.color.color1)); 
} 
+0

我用你的答案,但它colord第三個位置和一些位置隨機以及我應該如何控制它? – user3266062

+0

我運行你的代碼,它的工作正常。我認爲你已經在這個頁面上定製了更多。 – Shini

+0

你是對的,但代碼的另一部分只是爲了改變字體的工作。我只是把.setTextColor(Color.RED);你的代碼的instate並把它在返回 – user3266062

0

也許更好的方式是閱讀有關Android的適配器Reference

Basicaly getView方法作品一點點像的foreach並返回查看對象的數組或列表中的每一個項目,你可以修改你想要的,你只需要進行內部getView()方法所需的任何更改

關於更改顏色,您可以從您已經膨脹convertView獲得主要佈局容器,並改變它的背景顏色屬性,只要你想

0

改變你的getView - 方法本:

 
public View getView(int position, View convertView, ViewGroup parent) { 
    ViewHolder holder = null; 
    RowItem rowItem = getItem(position); 


    LayoutInflater mInflater = (LayoutInflater) context 
      .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 
    if (convertView == null) { 

     convertView = mInflater.inflate(R.layout.hemistich_rows, null); 
     holder = new ViewHolder(); 
        holder.firstHemistich = (TextView) convertView 
       .findViewById(R.id.title); 
     holder.SecondHemistich = (TextView) convertView 
       .findViewById(R.id.desc); 

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

    holder.firstHemistich.setText(rowItem.getTitle()); 
    holder.SecondHemistich.setText(rowItem.getDesc()); 

    // change color of item 
    if (yourValueHere) { 
     holder.SecondHemistich.setTextColor(yourColor); 
    } 

    return convertView; 
} 

變化yourValueHere和yourColor .. 。這將根據值yourValueHere爲每個項目着色。

相關問題