ListView+adapter在apapter里面更新数据,然后notifyDatasetChange()就好
解决方案 »
- 实现圆角边框的阴影效果
- 求助android画折线图问题
- 请教关于android,国际化问题。。
- 很诡异的问题Android Animation中AlphaAnimation问题, 望大侠关注下
- Android 刷屏 问题 高分求助 求高手
- gridview 显示图片,想给每行设置背景图片,跪求代码
- 访问http老是不成功,求高手指点哪里出了问题
- 有会ndk的大神吗
- 如何在自定义View的onLayout生命周期addView
- 最近出现的APK内部更新有问题
- 想入门,期待你们指点
- 做Hello案例的时候,要Create an AVD,我双击android.bat出来的dos窗口加图形化设置AVD的界面
获取数据在多线程里面 ,然后通知主线程里面的Handler进行UI更新就行了
如何通知主线程里面的Handler进行UI更新呢?
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_UI: {
adapter.notifyDataSetChanged();
next = true;
break;
}
default:
break;
}
}
};
class Thread1 extends Thread { ArrayList<Video> al;
SelectDetailAdapter adapter;
Receive callback;
int page;
int onecount; public Thread1(ArrayList<Video> al, SelectDetailAdapter adapter,
Receive callback, int page, int onecount) {
this.al = al;
this.adapter = adapter;
this.callback = callback;
this.page = page;
this.onecount = onecount;
} public void run() {
al.addAll(HelperFactory.getInstance().getServerStub()
.retrVideoList(Constants.FIRSTVIEWSECTION,
String.valueOf(page), onecount));
通知主线程 mHandler.sendEmptyMessageDelayed(UPDATE_UI, 0); // Thread2 thread2 = new Thread2(al, adapter);
// callback.onReceived(thread2);
}
}但是没有刷新,而且获取数据多了话还是会有异常,ui线程更新异常!
这里是下载数据
al.addAll(HelperFactory.getInstance().get
ServerStub()
.retrVideoList(Constants.FIRSTVIEWSECTION,
String.valueOf(page), onecount));
这里通知主线程 mHandler.sendEmptyMessageDelayed(UPDATE_UI, 0);// Thread2 thread2 = new Thread2(al, adapter);
// callback.onReceived(thread2);
}
这没用啊~
protected void onPreExecute() {
// 获取数据前执行
super.onPreExecute();
}
@Override
protected Object doInBackground(Object... params) {
// 从服务器获取数据
return null;
}
@Override
protected void onPostExecute(Object result) {
// 刷新界面
super.onPostExecute(result);
}
}
public static final int MSG_CLOSE_SERVER = 1;
private final Handler _handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_CLOSE_SERVER:
//关闭监听
setServerScoketEnabled(receiveOnOrOff,false);
receiveOnOrOff.setChecked(false);
break;
}
}
};...public void run() {
Message msg = handler.obtainMessage(EcardExchange.MSG_CLOSE_SERVER);
handler.sendMessage(msg);
}
用这种方法试试