返回信息流我在一个页面内做了一个tab,并在这个tab里添加的两个页面,当然这两个页面都是fragment
mTabHost.addTab(mTabHost.newTabSpec("comment").setIndicator("comment"),ProductReviewFragment.class,bundle);
mTabHost.addTab(mTabHost.newTabSpec("post").setIndicator("post"),ProductPostFragment.class,bundle);
这里面的fragment很简单,继承的都是fragment,页面内也只放了一个listView
问题来了:
在fragment初始化的时候,比如ProductReviewFragment,我进行了一次网络请求,将请求回来的数据放到listView的Adapter的数据源里,然后再调用一次Adapter的NotifyDataSetChanged(),发现fragment并没有变化。
当我把标签切换到别的标签页,再切回来的时候(网络请求是在onCreate的时候做的,因此切回来不会触发网络请求),刚才读取到的数据才被绘制到listView里。
请教各位,这个情况是什么导致的呢?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #14433同步于 2014/6/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
关于fragment页面绘制的问题
luminos
2014/6/10镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
用的是一个handler,网络请求之后由HttpManager把数据发到这个fragment的handler里
private class MyHandler extends Handler{
private ProductReviewFragment mActivity = null;
public MyHandler(ProductReviewFragment activity){
mActivity = activity;
}
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case ProductHelper.GET_PRODUCT_REVIEW_SUCCESS:
ListProductReviewResponse response = (ListProductReviewResponse)msg.obj;
if (response != null) {
if (response.getProductThreadList()!=null) {
listProductThread.addAll(response.getProductThreadList());
}
mark = response.getMark();
mAdapter.notifyDataSetChanged();;
}
mListView.onRefreshComplete();
if (listProductThread.size()>=response.getTotalNumber()) {
mListView.setMode(Mode.DISABLED);
}
break;
case ProductHelper.GET_PRODUCT_REVIEW_FAILED:
mListView.onRefreshComplete();
if (msg.obj!=null) {
NetWorkException exception = (NetWorkException)msg.obj;
NetWorkException.handlerResultNetWorkNotAvailable(getActivity(), exception);
}
default:
break;
}
}
【 在 ccyingzi2009 的大作中提到: 】
: 网络请求完成之后是如何给Adapter的数据源更换新的值得。 贴一下那一行代码
其中的listProductThread是mAdapter的数据源,我跟踪代码的时候表示数据源已经更新了,notifyDataSetChanged也执行了,但是fragment并没有更新。
【 在 ccyingzi2009 的大作中提到: 】
: 网络请求完成之后是如何给Adapter的数据源更换新的值得。 贴一下那一行代码