Android中,我在Activity中用ListView来显示数据,adapter继承BaseAdapter,第一次可显示,重复运行不显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中,我在Activity中用ListView来显示数据,adapter继承BaseAdapter,第一次可显示,重复运行不显示相关的知识,希望对你有一定的参考价值。

我的代码是看沈大海老师的新浪微博视频写的,把原来的Base认证自己改成了OAuth认证!使用的事沈大海老师的底层框架,但是我做到MainActivity时出问题了,MainActivity是暂时用来显示首页微博信息的,所以结构很简单,只有一个ListView控件用来显示微博内容,一开始我从eclipse中运行程序,能够运行,并能在MainActivity中显示出微博内容,但是,当我按返回键退出程序后,再从模拟器中运行(不是从eclipse中启动,这个是问题的重点),程序进入到MainActivity中,但是MainActivity除了有标题之外,整个屏幕都是黑的!
后来我追踪了一下,发现那些数据都已经从网上下载了下来,并且成功完成了setAdapter()操作,但是数据内容就是不再屏幕上显示,程序也没有报错!
我原以为是模拟器的问题,后来换了几个模拟器也一样,用手机测试也是这样!
这个问题困扰了我好久了,求各位大神帮帮忙!我把MainActivity的代码贴在下面了:
public class MainActivity extends Activity implements IWeiboActivity
public static final int REFRESH_WEIBO=1;
public static final int REFRESH_ICON=2;
public ListView allStatus;//所有主页微博信息
@Override
public void init()
// 加载当前用户的微博首页信息
Task task=new Task(Task.TASK_GET_USER_HOMETIMEINLINE
,null);
MainService.newTask(task);


@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
allStatus=new ListView(this);
this.setContentView(allStatus);
MainService.allActivity.add(this);


@Override
protected void onDestroy()
// TODO Auto-generated method stub
super.onDestroy();


@Override
protected void onResume()
// TODO Auto-generated method stub
super.onResume();
init();


@Override
public void refresh(Object... param)
// TODO Auto-generated method stub
switch(((Integer)(param[0])).intValue())
case REFRESH_WEIBO://更新微博列表
MyAdapter ma=new MyAdapter(this,(List<Status>)param[1]);

allStatus.setAdapter(ma);
break;
case REFRESH_ICON://更新用户的头像




class MyAdapter extends BaseAdapter
public List<Status> alls;
public Context context;
public MyAdapter(Context con,List<Status> list)
alls=list;
context=con;

@Override
public int getCount()
// TODO Auto-generated method stub
return alls.size();


@Override
public Object getItem(int position)
// TODO Auto-generated method stub
return null;


@Override
public long getItemId(int position)
// TODO Auto-generated method stub
return 0;


@Override
public View getView(int position, View convertView, ViewGroup parent)
// TODO Auto-generated method stub
TextView tv=new TextView(context);
tv.setText(alls.get(position).getUser().getName()+":"
+alls.get(position).getText());
return tv;


参考技术A 1.把init()方法放在onCreate()里,在令一个Activity里对返回键进行监听,用Intent跳转到MainActivity。
2.在跳转的时候将MainActivity的状态保存,返回的时候恢复MainActivity的状态
3.再联系追问

不甚解!我已经将init()方法放到onCreate()方法里了,这样就不用每次覆盖掉MainActivity后再返回时重新更新网络数据!但是还是解决不了关掉程序后,再次启动程序无法显示数据的问题!关键就在于,数据已经拿到,跟踪显示数据貌似已经通过adapter添加到ListView中,但是就是显示不出来!
有劳兄台能再说清楚些,我是个新手啊!有劳啦!

参考技术B 把onrefresh的判断条件改一下试试,让第二遍运行程序也能重新适配追问

这个怎么改啊?!我感觉现在的refresh()方法中的判断条件就是在每次调用refresh()方法时进行重新配置adapter,然后添加给ListView!
请兄台能详细说明一下,有劳了!

参考技术C 程序的逻辑有问题

假设你的DataList里面一共有三项,你选中的是第二个复选框,当遍历DataList的时候,由于第一个ChxeckBox不是选中的,就直接执行else里的跳转了本回答被提问者采纳
参考技术D 楼主现在有没有把这个问题搞定了?我现在也遇到同样的问题...很困扰... 第5个回答  2011-08-22 楼主现在有没有把这个问题搞定了?我现在也遇到同样的问题...很困扰...

以上是关于Android中,我在Activity中用ListView来显示数据,adapter继承BaseAdapter,第一次可显示,重复运行不显示的主要内容,如果未能解决你的问题,请参考以下文章

android中使用SQLiteOpenHelper创建数据库

Android开发中使用startActivityForResult()方法从Activity A跳转Activity B出现B退出时A也同时退出的解决办法

Android开发中关闭service的问题

android 怎么在activity之间传递List 类型的数据

Android中Activity的Flags

android开发中在 AccessibilityService 中启动activity失败