ListView未在自定义ViewGroup中刷新

时间:2012-02-27 17:49:26

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

我有一个自定义视图组,当我调用菜单按钮时,我的屏幕会向右滑动,让我们看到第二个布局(我的菜单)。

我的项目中有类似的活动没有菜单,而且工作正常。 它是一个简单的视图,其中包含一个列表视图,它显示来自webservices的数据。

当我参加此活动时,我的listView的内容在数据到达时不会刷新。但是当我按下菜单按钮时,视图翻转并显示列表视图的内容(没有图像,当我滚动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();
对于那些认真对待这个人的人来说,要感谢他们。

1 个答案:

答案 0 :(得分:0)

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