【问题标题】:ListView not refreshing in a custom ViewGroupListView 未在自定义 ViewGroup 中刷新
【发布时间】:2012-02-27 17:49:25
【问题描述】:

我有一个自定义视图组,当我调用菜单按钮时,它允许我的屏幕向右滑动,让出现第二个布局(我的菜单)。

我的项目中有类似的活动,但没有菜单,而且效果很好。 这是一个简单的视图,其中包含一个列表视图,用于显示来自 Web 服务的数据。

当我开始这个活动时,我的 listView 的内容在数据到达时不会刷新。但是当我按下菜单按钮时,视图滑动和我的列表视图的内容出现(没有图像,当我滚动我的列表视图时出现)。

这是按下菜单按钮时触发的事件:

public void customScroll(final int i) {
        new Thread(new Runnable() {

            @Override
            public void run() {
                if (i == 0) {
                    for (int inc = 200; inc >= 0; inc -= 5) {
                        final int inc2 = inc;
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                               //cvg is the implementation of my customViewGroup
                                cvg.scrollTo(inc2);
                            }
                        });
                        try {

                            synchronized (this) {
                                wait(5);
                            }

                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                } else {
                    for (int inc = 0; inc <= 200; inc += 5) {
                        final int inc2 = inc;
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                cvg.scrollTo(inc2);
                            }
                        });
                        try {

                            synchronized (this) {
                                wait(5);
                            }

                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                }

            }
        }).start();

当我的数据被下载时,这就是在“runOnUiThread”中运行的线程:

private Runnable returnRes = new Runnable() {

        @Override
        public void run() {
            if (doubleVideos != null && doubleVideos.size() > 0) {
                videoAdapter.notifyDataSetChanged();
                for (int i = 0; i < doubleVideos.size(); i++) {
                    videoAdapter.add(doubleVideos.get(i));
                }
            }
            videoAdapter.notifyDataSetChanged();
}

我的活动行为很奇怪,不懂就问我。 我已经试过了:

cvg.invalidate();
            cvg.scrollTo(20);
            //listView.notify();
            listView.refreshDrawableState();
            cvg.refreshDrawableState();
            listView.bringToFront();
            listView.invalidate();
            cvg.invalidate();
            listView.refreshDrawableState();

十亿感谢那些红了这个的人。

【问题讨论】:

    标签: android android-listview android-custom-view


    【解决方案1】:

    我之前也有同样的问题..,我认为你没有以正确的方式实现 ViewGroup!在自定义 ViewGroup 中,在调用 onLayout 上的 layout 方法之前,为每个孩子调用 measure 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      相关资源
      最近更新 更多