adapter刷新后UI界面不改变

Android 码拜 5年前 (2016-05-03) 705次浏览
在MainActivity中
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUESTCODE) {
if (resultCode == Activity.RESULT_OK) {
Bundle bundle = data.getExtras();
if (bundle == null) {
return;
}
Model model = (Model) bundle.getSerializable(KEY);
if (model == null) {
return;
}
Log.e(“–****”, “userid”+model.getUserid()+”username”+model.getUsername());
persons.add(model);
adapter.update(persons);
}
}
}

适配器Myadapter中
public void update(List<Model> person) {
this.persons = person;
notifyDataSetChanged();
Log.e(“*******”, “本人要刷新刷新”+persons.size());
}
效果图
adapter刷新后UI界面不改变
应该是点了 发布后   就会执行到onActivityResule里面    把发布的模型添加到modle中  然后主界面会更新
在onActivityResule中   adapter.update(persons) 里面的log.e也打印出来   而且这个modle模型中的数据也取到了    在adapter中 persons.size()的值也增加了1 。  但是主界面ui  没有变化
求高手指点。

解决方案

5

你这适配器不对吧?怎么不继承BaseAdapter,用getView?

5

你把add的操作放到notifyDataSetChanged();之前 就是 你传入adapter的update的函数的时候 传一个model 在适配器里add 试试

5

Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
//在handler类里面刷
adapter.notifyDataSetChanged();
break;
}
super.handleMessage(msg);
}
};

5

notifyDataSetChanged()执行的条件是你的adapter绑定的数据有所改变(必须是存储的改变)   persons实体不知道是不是全局的,应该先清空在add。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明adapter刷新后UI界面不改变
喜欢 (0)
[1034331897@qq.com]
分享 (0)