我是Android开发人员的新手,仍然可以完成很多工作。
我有一个使用以下代码显示的主菜单,但是无法确定如何禁用菜单中的选定项目.有人可以帮我提供一些示例代码吗?
public class listTest extends ListActivity {
@Override
public void onCreate(Bundle savedState) {
super.onCreate(savedState);
setListAdapter(ArrayAdapter.createFromResource(this, R.array.mainMenu,
android.R.layout.simple_list_item_1));
//not sure how to disable list items here
}
protected void onListItemClick(ListView list, View view, int position, long id) {
// can disable items when they are clicked on
view.setEnabled(false);
}
}
而且我有个
string-array
在我的strings.xml文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="mainMenu">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
</string-array>
</resources>
谢谢
最新回答
- 2021-1-111 #
- 2021-1-112 #
我相信列表项的状态是否属于列表项已启用,所以我想您必须在
ListAdapter
中进行管理 .子类化适配器时,可以覆盖isEnabled(position)
.对于您在此处返回true的任何位置,ListView都会将该项目标记为禁用。所以您想要做的是这样的:
class MenuAdapter extends ArrayAdapter<String> { public boolean isEnabled(int position) { // return false if position == positionYouWantToDisable } }
这可能需要例如
Map
如果您希望能够使用设置器启用/禁用某项,则管理每一项的启用状态。然后在ListView上设置自定义适配器。
- 2021-1-113 #
您可以通过同时调用两个列表项来禁用列表项(=使它不响应触摸)
setClickable(false)
和
setFocusable(false)
。
默认情况下,这不会自动以图形方式反映出来。
我当前正在列表中使用该列表,该列表的列表项不可单击,但大多数包含可单击的小部件.效果很好。
这样,通常会绘制包括分隔符的列表项(请参阅Janusz对上面接受的答案的答复)。
- 2021-1-114 #
或者以简单的方式取消注册和注册 OnItemClickListener 可以是一个更好的主意。
要注册:
lstDevice.setOnItemClickListener(context);
要注销:
lstDevice.setOnItemClickListener(null);
要在创建列表时禁用列表项,您必须从
ArrayAdapter
继承 .您必须重写以下方法:isEnabled(int position)
和areAllItemsEnabled()
.在以前,您返回true
或false
取决于是否启用了给定位置的列表项.在后者中,您返回false
如果您想使用
createFromResource()
您也必须实施该方法,因为ArrayAdapter.createFromResource()
仍实例化ArrayAdapter
而不是您自己的适配器。最后,代码将类似于以下内容: