2011-06-03 52 views
1

我在我的程序下面的類:Android的列表視圖問題

public class RZoom extends Activity { 
private ArrayList<FItem> m_FItems; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fchooser); 

    TextView tvName = (TextView)findViewById(R.id.txtTitleShow); 

    m_fItems = ((ArrayList<FItem>)this.getIntent().getSerializableExtra("fItems")); 
    tvName.setText(this.getIntent().getExtras().getString("RName")); 

    ListView lv = (ListView)findViewById(R.id.listView1); 
    FItemAdapter adapter = new FItemAdapter(this, R.layout.row, m_FItems); 
    lv.setAdapter(adapter); 

    } 
} 

該類顯示自定義列表視圖,一切工作正常。我的問題是:

  1. 如何捕獲項目點擊Listview?我所見過的所有例子似乎都繼承了ListActivity而不是Activity,就像我在做的一樣。

  2. 有沒有辦法遍歷listview中的項目,並將項目的背景顏色設置爲Red,具體取決於實際項目? (換句話說,我想程序化地突出顯示一個項目取決於實際項目)

任何幫助,將不勝感激!

回答

2
  1. lv.setOnItemClickListener()
  2. 覆蓋FItemAdapter的getView()根據項目的不同顏色來改變/位置
0
  1. 關於第一個問題,你需要從它的ID搶的ListView ,因爲您從Activity繼承而不是從ListActivity繼承:

    ListView lv_GetViewList = (ListView)findViewById(R.id.myListView); 
    lv_GetViewList.setOnItemClickListener(new OnItemClickListener() 
    { 
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
        { 
         // Your Code here 
        } 
    }); 
    

2。您可以重寫getView()函數,然後根據您希望用於特定Control或所有控件(例如TextView)的條件獲取所需的行控件。您可以設置其背景顏色:

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    TextView tv_Text = (TextView) v.findViewById(R.id.myRowTextView); 
    if(tv_Text != null) 
    { 
     tv_Text.setBackgroundColor(Color.RED); 
    } 
    return v; 
}