我有一个包含两个元素的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"));
}
}
我想更改背景颜色,颜色应该基于所选项目。
最简单的方法是什么?
答案 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);
}
}