Android Listview问题

时间:2011-06-03 22:37:13

标签: android android-listview

我的课程中有以下课程:

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);

    }
}

此类显示自定义Listview,一切正常。我的问题是:

  1. 如何在Listview上捕获项目?我见过的所有示例似乎都继承了ListActivity而不是Activity,就像我正在做的那样。

  2. 有没有办法迭代列表视图中的项目并将项目的背景颜色设置为红色,具体取决于实际项目? (换句话说,我想根据实际项目以编程方式突出显示项目)

  3. 任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

  1. lv.setOnItemClickListener()
  2. 根据项目/位置重写FItemAdapter的getView()以更改颜色

答案 1 :(得分: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. 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;
    }