gpt4 book ai didi

android - alertdialog 中禁用的列表项不会显示为灰色项目

转载 作者:行者123 更新时间:2023-11-29 00:38:11 24 4
gpt4 key购买 nike

这是我的场景。

我有一个 Activity ,我必须在其中显示一个对话框(这是一个带有两个选项 OptionA 和 OptionB 的 ListView )。我使用的 ListView 处于单选模式。但有时选项 A 被禁用(不允许用户选择选项 A)

这些是我的代码 fragment

private void createDialog() {
boolean disableOptionA = false;
...
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.codec_title));

ListView modeList = new ListView(this);
final ArrayAdapter<CharSequence> modeAdapter = CustomMenuAdapter.createFromResource(this, R.array.codec_decoder,
android.R.layout.simple_list_item_single_choice, disableOptionA);
modeList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
modeList.setAdapter(modeAdapter);
builder.setView(modeList);
final Dialog dialog = builder.create();
...
}

codec_decoder 数组包含两个选项 OptionA 和 OptionB。 CustomMenuAdapter 的代码如下。

public class CustomMenuAdapter extends ArrayAdapter<CharSequence> {

boolean disableOptionA = true;

private CustomMenuAdapter(Context context, int textViewResId, CharSequence[] strings, boolean disableOptionA) {
super(context, textViewResId, strings);
this.disableOptionA = disableOptionA;
}

public static CustomMenuAdapter createFromResource(Context context, int textArrayResId, int textViewResId,
boolean disableOptionA) {

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

return new CustomMenuAdapter(context, textViewResId, strings, disableOptionA);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
view.setEnabled(isEnabled(position));
return view;
}

@Override
public boolean areAllItemsEnabled() {
return false;
}

@Override
public boolean isEnabled(int position) {
if (position == 0) {
if (disableOptionA) {
return false;
}
}
return true;
}
}

现在一切正常,但是当 OptionA 被禁用时,它会被禁用但看起来像已启用,它不会NOT变灰。有什么想法吗?

最佳答案

您只需替换以下代码:

    @Override
public boolean isEnabled(int position) {
if (position == 0) {
if (disableOptionA) {
return false;
}
}
return true;
}

与如果我想在位置 1 上禁用我的项目:

     @Override
public boolean isEnabled(int position) {

if (position == 1)
return true;

return false;
}

关于android - alertdialog 中禁用的列表项不会显示为灰色项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300381/

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