java - 如何从我的对话框 (Android) 访问我的 GridView 实例?

标签 java android gridview dialog

我的 Android 应用程序出现问题。这可能是一个简单的 Java 问题,但我对 Java 不太了解,不知道该谷歌什么。下面是我所拥有的内容的简化版本,说明了我的问题。我希望能够从我的对话框访问gridview。显然我这里的东西是不正确的。我尝试将声明移到 onCreate 方法之外,但随后我的应用程序在开始时崩溃(没有错误消息)。我还尝试将其添加为 ShowDialog 的参数,但我想是因为我重写了该函数,但该函数不起作用。正如你可能知道的那样,我不知道自己在做什么。想法?

public class HelloGridView extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this));
        ((ImageAdapter) gridview.getAdapter()).initializemThumbIds();

        gridview.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                showDialog(0);
            }
        });
    }

    protected Dialog onCreateDialog(int id) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("?")
               .setCancelable(false)
               .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       gridview.setAdapter(new ImageAdapter(this));  // gridview cannot be resolved
                       dialog.cancel();
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       HelloGridView.this.finish();
                   }
               });
        AlertDialog diag = builder.create();
        return diag;
    }
}

最佳答案

我认为你只是没有正确的范围,所以下面我将 gridView 设置为成员变量。但我认为您真正想做的是将 ImageAdapter 设为成员变量,并仅在对话框中单击"is"时更新 ImageAdapter。

public class HelloGridView extends Activity {
private GridView gridview;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    gridview = (GridView) findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(this));
    ((ImageAdapter) gridview.getAdapter()).initializemThumbIds();

    gridview.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            showDialog(0);
        }
    });
}

protected Dialog onCreateDialog(int id) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("?")
           .setCancelable(false)
           .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   gridview.setAdapter(new ImageAdapter(this));  // gridview cannot be resolved
                   dialog.cancel();
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   HelloGridView.this.finish();
               }
           });
    AlertDialog diag = builder.create();
    return diag;
}
}

关于java - 如何从我的对话框 (Android) 访问我的 GridView 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736908/

相关文章:

java JPanel,动态添加组件到它和JScrollPane

android - 如何从 GridView 获取滚动位置?

c# - WPF ListView->GridView->StackPanel

objective-c - UITableView 自定义单元格图像在滚动后消失。

android - 在 webview 中单击链接时如何启动 Activity ?

java - 在SQLite数据库中存储位图

java - Webview 占据整个屏幕

java - 在 JBoss 4.0.2 war 部署中找不到 WEB-INF/lib jar

java - 如何使用 Java 将新注释附加到 JIRA 上已有的注释

android - 系统范围的屏幕覆盖: a draggable UI element made in Compose?