【发布时间】: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