Android runOnUiThread不更新UI元素

时间:2015-04-06 06:38:51

标签: android gridview android-runonuithread

您好我正在开发我正在使用网格视图的Android应用程序。我想动态更新网格项。我的网格项包含一个标题文本。我试着这样做,但它不适合我。

 ((Activity)context).runOnUiThread(new Runnable()
    {
        public void run()
        {
            Debug.print("this is update progress inside thread  ...");

            owner.setText("Uploading...");

            invalidate();
            requestLayout();
        }
    });

所以在上面的代码中打印调试语句。但是不要更新网格项内的所有者文本。

我也试过了......

 Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            owner.setText("Uploading...");
        }
    };
    handler.sendEmptyMessage(0);

4 个答案:

答案 0 :(得分:0)

  

所以在上面的代码中打印调试语句。但不是更新我的   所有者文本在网格项目内。

我认为它的textview没有引用网格适配器中的项目。您可以在init和getTag()内部使用set标签来检查它,并使用runonUIThread方法。

让我们检查一下这个textview是本地变量还是全局变量。如果是全球性的,它只引用最后一项 - 然后检查最后一项更改?  好的,如果不是。让我们发布完整的代码。

答案 1 :(得分:0)

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        Debug.print("Updating UI ...");
        owner.setText("Uploading ...");
        invalidate();
        requestLayout();
    }
});

答案 2 :(得分:0)

尝试刷新用于加载网格项的适配器。 您可以使用 invalidateViews ()方法或 adapter.notifyDataSetChanged()

这有助于您解决问题。

快乐编码..

答案 3 :(得分:0)

检查您的代码中是否有任何可能阻塞 UI 的 Thread.sleep()。