调用了notifydatasetchanged方法后 listview数据加载成功但是画面不及时更新,要滚动一下屏幕才出来刷新的数据,求高手指点

shuifengzi 2014-02-25 01:57:52
listview 调用了notifydatasetchanged方法后 屏幕内容须通过下拉然后再返回来才能显出变化 ,在网上找了很长时间也不知道原因,请高手指点一下啊!

数据更新没有问题,就是显示不及时,相当于屏幕要滑动到别的地方再回来 才行。点击底部加载更多的时候,往下拉会看到数据,但是那个加载更多的按钮还是在原先的位置,没有跑到底下,画面没有更新,当把这个画面上下拉一下回来后 ,才看到想要的画面,

这个是我调用刷新的代码
private HuihuaAdapter ha;

public void onRefresh() {
mHandler.postDelayed(new Runnable() {
public void run() {
list.clear();
list.addAll(getHuahui());
// Toast toast = Toast.makeText(MainActivity.this, "接收到刷新指令"
// + list.size(), Toast.LENGTH_LONG);
// toast.show();
ha.list = list;
mPullDownView.onRefreshComplete();//这里表示刷新处理完成后把上面的加载刷新界面隐藏
mPullDownView.setMore(true);//这里设置true表示还有更多加载,设置为false底部将不显示更多
ha.notifyDataSetChanged();

}
}, 1500);


-------下面这个是HuihuaAdapter .java-------------------


public class HuihuaAdapter extends BaseAdapter {
private Context context;
public ArrayList<HuiHua> list = new ArrayList<HuiHua>();

public HuihuaAdapter(Context context,ArrayList<HuiHua> list){
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
HuiHua hh = list.get(position);
H h = null;
if(view==null){


h = new H();
view = LayoutInflater.from(context).inflate(R.layout.liaotian, parent, false);
//h.pic = (ImageView)view.findViewById(R.id.l1);


h.pic = (TextView)view.findViewById(R.id.l1);
h.name = (TextView)view.findViewById(R.id.name);
h.time = (TextView)view.findViewById(R.id.time);
h.lastmsg = (TextView)view.findViewById(R.id.lastmsg);

view.setTag(h);
}else{
h = (H)view.getTag();
}


//h.pic.setImageResource(Integer.parseInt(hh.getTxPath()));
//h.pic.setText(hh.getTxPath());
h.pic.setText(hh.getTxPath());
h.name.setText(hh.getName1());
h.time.setText(hh.getLastTime());
h.lastmsg.setText(hh.getLastContent());

//更换背景图片,getEndtime返回的值为1时,表示有效,否则则是无效过期的标识背景
if (hh.getEndtime().equals("1")) {
h.pic.setBackgroundResource(R.drawable.areabg1);

} else {
h.pic.setBackgroundResource(R.drawable.areabg2);
}



return view;
}
class H{
//ImageView pic;
TextView pic;
TextView name;
TextView time;
TextView lastmsg;
}

}

万望高手指点啊!

...全文
9522 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
minddancer 2016-03-17
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
再次感谢,,也折腾了一天了。。。
Junan__ 2016-02-15
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
帮大忙了
萝卜青菜丶 2015-09-15
  • 打赏
  • 举报
回复
看了这么多回帖的。。思路不对,先把listview定位到上次数据最后一行就可以了。 listview.setSelection(int position); 然后在更新到UI,即可实现这个效果。
lpk_6 2015-08-18
  • 打赏
  • 举报
回复
额 一般加载都用异步的吧QAQ。改变之后,调用刷新,
muzi1314_ 2015-08-17
  • 打赏
  • 举报
回复
楼主,我来说下,我觉得应该是HuihuaAdapter里面的list数据源的数据没有及时的更新,使用的还是刷新前的数据,所以在使用ha.notifyDataSetChanged(); 之后没有及时的刷新,其实getview方法应该是调用了,只是用的是上一次的list;所以在ha.notifyDataSetChanged(); 之前更新一下HuihuaAdapter中的list应该就行了;
millyn13 2015-08-17
  • 打赏
  • 举报
回复
跪求这个demo 谢谢 1982389117@qq.com
xiaomayi201314 2015-07-10
  • 打赏
  • 举报
回复
我也遇到同样的问题 只是用的不是这个Demo 不知道怎么解决
agoodcoolman 2015-03-26
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
真棒...用你得方法就解决林.
jayaaaiii 2014-12-20
  • 打赏
  • 举报
回复
两相不相关的文件,怎么会有问题呢?
mykoss 2014-12-20
  • 打赏
  • 举报
回复
我也遇到了同样的问题 不过不是用的楼主的这个demo,是用的瀑布流控件 我也按层里的方法去掉onlayout里判断的方法,不过问题还是没有解决....................
thwykb 2014-12-18
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
谢谢啊,找了好久终于解决了,哈哈,大家都用的同一个Demo...谢谢谢谢
融化的雪 2014-11-21
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
解决了我大问题,咱们都是一样的啊,谢谢啦
SeVen.Shang 2014-10-23
  • 打赏
  • 举报
回复
引用 15 楼 mixia1990 的回复:
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
这一句去掉就好了,,谢谢。。。
你用的这个demo可以给我看下吗?shangyufeng515@yeah.net
legendlb 2014-10-22
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
谢谢,纠结了很久的问题解决了
T-1600 2014-09-27
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
万分感谢,不多说,折腾我几天了, 再次感谢!
a979546246 2014-08-04
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
神啊,你救了我,可我还是不明白为什么,我也用到了网上的这个demo
mixia1990 2014-05-21
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
这一句去掉就好了,,谢谢。。。
奈米奈米 2014-04-14
  • 打赏
  • 举报
回复
引用 11 楼 hnbq99 的回复:
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
= = 我咋一去掉这个判断直接停止工作了 0.0
奈米奈米 2014-04-14
  • 打赏
  • 举报
回复
引用 6 楼 shuifengzi 的回复:
没有解决呢,不知道是因为哪个冲突还是什么原因,好多天了没搞定
我也遇见这个问题了 ... 你解决没
hnbq99 2014-03-04
  • 打赏
  • 举报
回复
楼主,看到你的代码,我发现我的代码和你的是一样的,代码我是从网上找来的一个demo,你说的问题我已经解决了。不知道你的project是否有一个MyScollLayout.java的文件呢?如果有,那就改动一下里面的onLayout方法,把changed那个判断去掉就OK了
加载更多回复(11)

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧