【发布时间】:2012-03-30 19:04:56
【问题描述】:
在我的一项活动中,我有多个 ListView 控件。说 List 1、List 2 和 List 3。在 List 1 项目点击时,我从 web 服务加载 List 2 和 List 3 的数据。并且被点击的项目的背景被突出显示。我通过以下选择器实现了这一点。
<item android:drawable="@drawable/item_pressed" android:state_pressed="true"/>
<item android:drawable="@drawable/item_focused" android:state_focused="false"
android:state_pressed="false"
android:state_selected="true"/>
<item android:state_activated="true" android:drawable="@drawable/item_selected"/>
如您所见,我已指定 android:state_activated="true" 来更改点击/点击项目的 BG。这很好用。
实际上,如果正在加载其他项目的数据,我想防止点击的项目被选中/突出显示......就像
list1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// load data if no other call to web service is in progress
if (_isNotLoadingData) {
loadList2AndList3DataUsingWebService();
} else {
//Stop This Item From selected/highlighted
//BUT none of the following work. .. Item is always Selected
view.setSelected(false);
//view.setActivated(false);
//view.setEnabled(false);
}
}
});
上面的代码会阻止多个调用被定向到我们的网络服务,但如果没有为该 ListView 项目调用网络服务,我无法阻止该项目被突出显示/激活。
我怎样才能做到这一点?
编辑于 2012 年 3 月 19 日晚上 8:08: 还没有适当的回复……我被困住了,正在等待任何帮助
【问题讨论】:
-
为什么要取消点击?
-
为什么不只在 onItemClick 方法中添加 if 语句?如果它是 onItemClick 函数中的第一件事,那么它基本上与 onBeforeClick() 函数相同......
-
我已经更新了我的问题并进行了解释。很抱歉提供了一个不清楚的问题
-
@AamirHabib 您必须将
.setItemSelected()添加到父ListView,而不是子视图。看我的回答。
标签: android android-layout android-widget android-listview