在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);
}
}
}
@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());
}
效果图
应该是点了 发布后 就会执行到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);
}
};
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
//在handler类里面刷
adapter.notifyDataSetChanged();
break;
}
super.handleMessage(msg);
}
};
5
notifyDataSetChanged()执行的条件是你的adapter绑定的数据有所改变(必须是存储的改变) persons实体不知道是不是全局的,应该先清空在add。