基于ListView中选择的项目执行代码的最简单方法是什么?

时间:2013-01-10 16:03:02

标签: android android-layout

我有一个包含两个元素的ListView。我想根据已选择的项执行不同的代码。到目前为止,我的代码看起来像这样(但它不起作用):

protected void onListItemClick(ListView l, View v, int position, long id) {
     // TODO Auto-generated method stub
        ListView listview = (ListView) findViewById(android.R.id.list);
        View root = (View) listview.getParent();
        if (position == 1) {
            root.setBackgroundColor(Color.parseColor("#133b96"));
        } else if (position == 2) {
            root.setBackgroundColor(Color.parseColor("#bdbdbd"));
        }
    }

我想更改背景颜色,颜色应该基于所选项目。

最简单的方法是什么?

3 个答案:

答案 0 :(得分:4)

protected void onListItemClick(ListView l, View v, int position, long id) {

    if (position == 1) {
        v.setBackgroundColor(Color.parseColor("#133b96"));
    } else if (position == 2) {
        v.setBackgroundColor(Color.parseColor("#bdbdbd"));
    }
}

只需查看参数protected void onListItemClick()的{​​{1}}方法即可。这是一个选定列表项的视图。如果您想更改ListView的背景颜色,请使用

View v

之类的,

ListView l

因此,您必须从中移除其他代码才能使其正常工作。

答案 1 :(得分:0)

你可以打开位置。 更多的OOP方法是使用view的tag属性,并使用它来存储一些runnable。

e.g。

item.setTag(new Runnable() {
    public void run() {
        // run whatever code you want
    }
}

...

((Runnable)view.getTag()).run();

答案 2 :(得分:0)

   ArrayAdapter<MyClass> adapter= new ArrayAdapter<MyClass>(this, R.layout.lay_item, theObjects);
   myList.setAdapter(adapter);
   myList.setOnItemClickListener(new OnItemClickListener() {
   public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    MyClass item = (MyClass) adapter.getItem(position);
   }
  }