调用了notifydatasetchanged方法后 listview数据加载成功但是画面不及时更新,要滚动一下屏幕才出来刷新的数据,求高手指点
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;
}
}
万望高手指点啊!
数据更新没有问题,就是显示不及时,相当于屏幕要滑动到别的地方再回来 才行。点击底部加载更多的时候,往下拉会看到数据,但是那个加载更多的按钮还是在原先的位置,没有跑到底下,画面没有更新,当把这个画面上下拉一下回来后 ,才看到想要的画面,
这个是我调用刷新的代码
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;
}
}
万望高手指点啊!
...全文
相关推荐
自定义ListView实现下拉刷新+加载更多功能Demo
自定义ListView实现下拉刷新+加载更多功能Demo
Android ListView数据刷新与多条更新实战详解
在Android开发中,ListView作为承载大量条目展示的核心控件之一,其性能和灵活性高度依赖于适配器(Adapter)的设计与实现。虽然系统提供了如等开箱即用的实现类,但在面对复杂业务逻辑或定制化UI结构时,往往需要开发者继承并进行深度定制。本章聚焦于如何通过自定义完成高效的数据绑定,深入剖析其核心方法的作用机制、生命周期行为以及实际编码中的关键步骤,并结合常见问题提供可落地的调试策略。构建一个生产级可用的自定义需遵循严谨的编码规范与设计模式。
浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新
主要介绍了浅谈Android中适配器的notifyDataSetChanged()为何有时不刷新,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Listview实现刷新和更新一条或多条数据
Listview实现刷新和更新一条或多条数据,包括添加一条或多条数据的demo合集
Android——Listview不用notifydatasetchanged更新数据的方法
blog: http://blog.csdn.net/u013293125/article/details/52858396 http://www.cnblogs.com/ityizhainan/p/5976845.html


