【问题标题】:How to refresh android GridView如何刷新android GridView
【发布时间】:2013-01-18 02:58:53
【问题描述】:

我正在做 GridView 活动,首先显示默认图像,然后我为 netowrk 任务启动一个新线程以从数据库下载图像,我希望在线程完成后,GridView 将自动刷新网格中的图像.

from this question我拿了以下代码:

ImageAdapter adapt = (ImageAdapter)gridView.getAdapter();
adapt.setBitmap(bitmaps);
adapt.notifyDataSetChanged();

更新网格的适配器。 我在 onResume() 方法中执行了这 3 行,但是在线程完成后,我需要以某种方式调用 onResume() 方法(通过暂停活动或类似的东西)。

现在,如果我要移动到另一个活动(例如其中一个网格图像),然后按后退按钮,我可以看到我刚刚从数据库下载的网格视图图像。 (因为它调用 onPause() 方法,然后调用 onResume() )

有没有人能解决这个问题?

谢谢

编辑: 线程通过AsyncTask运行

【问题讨论】:

    标签: java android


    【解决方案1】:

    线程完成后,我需要以某种方式调用 onResume() 方法(通过暂停活动或类似的方式)。

    与其强行调用onResume(),不如将​​这三行移到一个新方法中,调用它refreshAdapter()。然后在onResume() 中调用refreshAdapter(),然后在任何你想刷新适配器的地方使用。

    【讨论】:

    • 它不起作用。但问题是我正在使用 adapt.notifyDataSetChanged();它从第二个线程执行,它不能更新 UI 元素。并且此方法正在 UI 上运行。
    • @NoamMizrachi 使用 runOnUiThread 从线程进行 UI 更改
    • 您使用的是真正的线程还是异步任务?如果您使用的是线程,则可以创建一个简单的回调。
    • @NoamMizrachi 我偶然发现了您的编辑:“线程正在通过 AsyncTask 运行”。您无法在 doInBackground() 中更改 UI,但您可以在 onPostExecute() 中更改。
    • 好的,我会试试这个,让你知道.. Tnx 的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多