android - 如何从 Android 中的 ListView 禁用(暗淡)onItemLongClick 中的选项?

标签 android listview listviewitem

当我的 ListView 中的一个项目被点击时,我会在一个对话框中弹出几个选项供用户选择。但是,在不同的情况下,我想禁用一个或多个选项,以便用户无法选择它们。这是一些代码。

public class MyApp extends ListActivity implements OnItemClickListener, OnItemLongClickListener {

private static final int HOW_MANY = 4;
private static final int ADD = 0;
private static final int EDIT = 1;
private static final int OPEN = 2;
private static final int DELETE = 3;

private String[] myItemClickDialog = null;
...

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.mylayout);


    this.myItemClickDialog = new String[HOW_MANY];
    this.myItemClickDialog[ADD] = "Add";
    this.myItemClickDialog[EDIT] = "Edit";
    this.myItemClickDialog[OPEN] = "Open";
    this.myItemClickDialog[DELETE] = "Delete";
}

@Override
public final boolean onItemLongClick(final AdapterView<?> parent,
    final View view, final int position, final long id) {

    final Context context = this;
    Builder builder = new Builder(context);
    builder.setTitle("Options");

    String[] items = this.myItemClickDialog;
    builder.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(final DialogInterface dialog, final int which) {
            switch (which) {
                case ADD:
                    //Do stuff
                    break;
                case EDIT:
                    //Do stuff
                    break;
                case OPEN:
                    //Do stuff
                    break;
                case DELETE:
                    //Do stuff
                    break;
            }
        }
// Rest of code here

我希望能够禁用(通过调暗)特定选项,例如 DELETE 选项或 OPEN 选项,具体取决于单击的列表项(我覆盖了那部分,即检测部分)。

最佳答案

不幸的是,这似乎是不可能的。 AlertDialog.Builder 系统在其定制选项中没有考虑到这一点。我查看了 createListView 的源代码来验证这一点。

我假设您已经考虑过不显示这些选项的更简单方法?也就是说,创建一个仅包含特定时刻有效字符串的数组副本?

关于android - 如何从 Android 中的 ListView 禁用(暗淡)onItemLongClick 中的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3802582/

相关文章:

android - 有没有办法在 Android 的 ListView 中禁用换行?

c# - 如何自定义System.Windows.Forms.ListViewItem?

c# - 将 ListView Item 从一个 listView 拖放到另一个

android - 从 Play 商店安装应用程序后获取推荐人详细信息

android - 如何传递ListView中的值?

android - 动态调用一个类?

android - jQuery mobile/Phonegap中如何正确处理数千行文本

Android:如何使用光标在 ListView 中获取所选项目?

android - 在Android中找不到FirebaseInitProvider

java - 打开短信并在其中放置一个随机数组