在 onResume 里刷新吧, android 的 onActivityResult只有在你使用 startActivityForResult 并且在另一个 activity 中 setResult 后才会触发,而 onResume 每次重现都会触发
解决方案 »
- startActivityForResult() 和 onActivityResult()
- adb devices为空
- android 上的 世界时钟 ,求大侠帮助
- ListPreference重写问题
- 新手求助,NDK项目,运行不起来
- 请问谁有过开发p2p的经验
- handler 中使用lock.lock锁住代码块,这样做有必要么?是符合逻辑的吗?hanlder中会出现多线程的情况?
- 如何获取在ActionBar中actionView的button控件的点击事件
- activity窗体事件赋值问题
- 想让问大牛我自己编的一个小程序,但是不知道怎么上传程序
- 画图文件保存 呈现黑色状态
- 求知,layout中的控件怎么重叠
Intent intent = new Intent(MyActivity.this, MyActivity.class);
intent.putExtras(data.getExtras());
startActivity(intent);
finish();
onActivityResult里只要修改数据对象annList,然后调用notifyDataSetChanged就可以。
是这个意思吗:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK){
Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
annList=getData();
myAdapter.notifyDataSetChanged();
}
}
这样还是没有刷新listview
问题最终解决了,还是onActivityResult里边的问题:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK){
Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
annList=getData();
myAdapter=new MyActivityAdapter(MyActivity.this,annList);
listview.setAdapter(myAdapter);
}
}
可能是我的代码的结构有问题吧,我的MyActivityAdapter是单独一个class文件,没有放在MyActivity.class里,所以只能先new,再setAdapter。ps:我这样结构不合理吗?
问题最终解决了,还是onActivityResult里边的问题:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK){
Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
annList=getData();
myAdapter=new MyActivityAdapter(MyActivity.this,annList);
listview.setAdapter(myAdapter);
}
}
可能是我的代码的结构有问题吧,我的MyActivityAdapter是单独一个class文件,没有放在MyActivity.class里,所以只能先new,再setAdapter。ps:我这样结构不合理吗?这个无所谓 Adapter 的位置的,主要是你的 annList 是通过 getData()获取的,相当于一个新的 list, 因此你调用 notifyDataChange 的时候,数据其实是没有更新的,正确的使用方式是 annList.clear(); annList.addAll(getData());,myAdapter.notifyDataChanged();
是这个意思吗:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode==RESULT_OK){
Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
annList=getData();
myAdapter.notifyDataSetChanged();
}
}
这样还是没有刷新listview
这个写法是错的。因为在java里,annList是个引用,你修改了annList,只是把annList指向另外一个对象,而adapter引用的annList还是指向原先的对象。
正确的写法是调用annList.append之类的方法。
果然是这样,list重新装载后刷新适配器即可。
我好想明白了一点了,感谢你们两位!