2011-08-26 66 views
0

如何爲特定行設置ListView的背景。Android setBackground或文本顏色爲列表視圖的特定行

ListView list = getListView(); 
    sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets}); 
    list.setAdapter(sd); 
    list.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
    list.setSelected(true); 
    list.setTextFilterEnabled(true); 
    list.setItemsCanFocus(true); 
    list.setSelectionAfterHeaderView(); 

    if(isVisitedToVisitHeader()){ 
     if(defaultRoutePos != 0){ 
      Log.i("-----" ,"---defaultRoutePos---" + defaultRoutePos +" --count-- "+list.getChildCount()); 
      list.setItemChecked(defaultRoutePos, true); 
      // list.getChildAt(positions).setBackgroundColor(R.color.red); 
      //list.getChildAt(defaultRoutePos).setBackgroundColor(R.color.red); 
     } 
    } 

這是我的代碼。我已經使用SimpleAdapter。在這裏做list.getChildCount()給0.This部分我在onCreate()定。

請幫我...提前

+0

不可能的這樣的回答。你需要對你自己的'getView()'進行細粒度的控制。你必須記住'ListView'回收視圖,並且當前可見的任何位置(大約6個項目)都不存在。 'listview.getChildAt()'返回第N *個可見*行,所以一個位置不會正確映射。 – dmon

回答

2

結帳定製的ListView的這個例子中,

Example

另外使用基`SimpleAdapter`的StackOverflow

StackOverflow Answer

+0

我正在使用'SimpleAdapter'使用muticolumn。是否可以使用'SimpleAdapter'?請幫幫我 – Piraba

1

包com.android.listactivity

感謝;

import android.app.Activity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;

import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 
    private final Activity context; 
    private final String[] names; 

    public MySimpleArrayAdapter(Activity context, String[] names) { 
     super(context, R.layout.rowlayout, names); 
     this.context = context; 
     this.names = names; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = context.getLayoutInflater(); 
     View rowView = inflater.inflate(R.layout.rowlayout, null, true); 
     TextView textView = (TextView) rowView.findViewById(R.id.label); 
     ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
     textView.setText(names[position]); 
     // Change the icon for Windows and iPhone 
     String s = names[position]; 

//這裏你可以用特定位置的排

 if (s.startsWith("Windows7") || s.startsWith("iPhone") 
       || s.startsWith("Solaris")) { 

      imageView.setImageResource(R.drawable.no); 
     } else { 
      imageView.setImageResource(R.drawable.ok); 
     } 

     return rowView; 
    } 
} 

我建議使用自定義適配器anythng如上圖所示:

如果沒有,你可以嘗試讓list.getPositionForView(view)爲所需的特定位置設置背景顏色或圖像

+0

NO.Its不工作。我正在使用'SimpleAdapter'使用muticolumn。是否可以使用'SimpleAdapter'?請幫助我 – Piraba

+0

你有沒有試圖讓list.getPositionForView(view)併爲所需的特定位置設置背景顏色或圖像 –

相關問題