gpt4 book ai didi

java - Android:如何在创建列表时禁用列表项

转载 作者:IT老高 更新时间:2023-10-28 20:56:03 26 4
gpt4 key购买 nike

我对 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);
}

}

我的 strings.xml 文件中有一个 string-array:

<?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>

谢谢

最佳答案

为了在创建列表时禁用列表项,您必须从 ArrayAdapter 继承。您必须覆盖以下方法:isEnabled(int position)areAllItemsEnabled()。在以前,您返回 truefalse 取决于是否启用给定位置的列表项。在后者中,您返回 false

如果你想使用 createFromResource() 你也必须实现那个方法,因为 ArrayAdapter.createFromResource() 仍然实例化 ArrayAdapter 而不是你自己的适配器。

最后,代码如下所示:

class MenuAdapter extends ArrayAdapter<CharSequence> {

public MenuAdapter(
Context context, int textViewResId, CharSequence[] strings) {
super(context, textViewResId, strings);
}

public static MenuAdapter createFromResource(
Context context, int textArrayResId, int textViewResId) {

Resources resources = context.getResources();
CharSequence[] strings = resources.getTextArray(textArrayResId);

return new MenuAdapter(context, textViewResId, strings);
}

public boolean areAllItemsEnabled() {
return false;
}

public boolean isEnabled(int position) {
// return false if position == position you want to disable
}
}

关于java - Android:如何在创建列表时禁用列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2183610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com