在 onResume 里刷新吧, android 的 onActivityResult只有在你使用 startActivityForResult 并且在另一个 activity 中 setResult 后才会触发,而 onResume 每次重现都会触发
解决方案 »
- 新手请教android Google Map
- ndk-build在libs/armeabi目录生成libxxx.so问题
- 如何实现android gridview中元素的拖动
- 音量大小的控件是如何实现的
- android怎么添加Flash
- Android 中传递 json 的问题
- 这个程序在android studio中运行不了;
- 导入外部jar包后报错 编译模拟器时提示Conversion to Dalvik format failed with error 1
- android sqlite 如何使用?
- 還是搞不懂 import static 與 import 有何不同之處!
- 画图文件保存 呈现黑色状态
- 求知,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重新装载后刷新适配器即可。
我好想明白了一点了,感谢你们两位!