2011-06-03 53 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; 
}