0

我有一个包含两个元素的 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"));
        }
    }

我想改变背景颜色,颜色要以选中的项目为准。

最简单的方法是什么?

4

3 回答 3

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()的参数方法View v。这是选定列表项的视图。如果您想更改 ListView 的背景颜色,请使用

ListView l.

就像是,

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

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

于 2013-01-10T16:05:50.490 回答
0

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

例如

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

...

((Runnable)view.getTag()).run();
于 2013-01-10T16:07:22.790 回答
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);
   }
  }
于 2013-01-10T16:07:54.057 回答