【发布时间】:2013-04-02 09:08:33
【问题描述】:
我正在使用 ListView 来显示项目列表。我点击一个项目以“选择”它,该项目在列表中短暂变为橙色,但随后返回背景颜色。
我怎样才能使该项目保持“点亮”,直到我取消选择它(通过再次点击该项目)?
另外,我可以调用一个方法来清除该列表的所有选定项目吗?
【问题讨论】:
-
clearChoices() 完成清除所选项目的工作。
我正在使用 ListView 来显示项目列表。我点击一个项目以“选择”它,该项目在列表中短暂变为橙色,但随后返回背景颜色。
我怎样才能使该项目保持“点亮”,直到我取消选择它(通过再次点击该项目)?
另外,我可以调用一个方法来清除该列表的所有选定项目吗?
【问题讨论】:
你需要一个状态列表
在 res/drawable 中创建一个 list_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_selected="true"
android:drawable="@color/orange" />
</selector>
在列表视图项的布局中,将以下代码添加到主框架布局中
android:background="@drawable/list_selector"
确保orange color 在res/values/colors 中定义
【讨论】:
您需要使用选择器,然后在 onListItemClick() 中使用 setSelected(true)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@color/orange" />
<item android:state_selected="false"
android:drawable="@android:color/list_default" />
</selector>
同时覆盖我的 onListItemClick() 方法:
@Override
protected void onListItemClick(ListView l, View view, int position, long id) {
super.onListItemClick(l, view, position, id);
view.setSelected(true);
}
EDIT:
public class YourClass extends ListActivity implements OnItemClickListener {
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.your_layout);
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
view.setSelected(true);
}
}
【讨论】: