微博的项目, setAdapter方法老报空指针错误,应该是数据有问题,解决不了了。
public void refresh(Object... param) {
Log.d("ref", (String)param[0]);
if(((String)param[0]).equals("REF_WEIBO"))
        { List<WeiBoInfo> friends = (List<WeiBoInfo>)param[1];  这个数据是用  handler异步消息处理message.object传递的     System.out.println(friends.size());    ---这里打印出来20条记录
     System.out.println(friends.toArray()); ---这里怎么只有一条数据打印出来呢??
  
System.out.println("加载数据2");
            WeiBoAdapater adapter = new WeiBoAdapater(this,friends);
            Msglist.setAdapter(adapter);
        }下面是logcat结果
------------------------------------------------------------------------------
没赋值给message.obj之前打印的数据
07-12 09:23:17.324: INFO/System.out(574): [Ljava.lang.Object;@43e35dd8
07-12 09:23:17.363: INFO/System.out(574): [Ljava.lang.Object;@43e76500
07-12 09:23:17.363: INFO/System.out(574): [Ljava.lang.Object;@43e76818
07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43edf730
07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43edfa50
07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43ec3b08
07-12 09:23:17.383: INFO/System.out(574): [Ljava.lang.Object;@43ec3e30
07-12 09:23:17.383: INFO/System.out(574): [Ljava.lang.Object;@43ec4158
07-12 09:23:17.412: INFO/System.out(574): [Ljava.lang.Object;@43ec46b0
07-12 09:23:17.423: INFO/System.out(574): [Ljava.lang.Object;@43ec49e0
07-12 09:23:17.423: INFO/System.out(574): [Ljava.lang.Object;@43ec4d18
07-12 09:23:17.443: INFO/System.out(574): [Ljava.lang.Object;@43f19c90
07-12 09:23:17.453: INFO/System.out(574): [Ljava.lang.Object;@43f1a030
07-12 09:23:17.453: INFO/System.out(574): [Ljava.lang.Object;@43f1a370
07-12 09:23:17.473: INFO/System.out(574): [Ljava.lang.Object;@43e6ddc8
07-12 09:23:17.473: INFO/System.out(574): [Ljava.lang.Object;@43e6e110
07-12 09:23:17.493: INFO/System.out(574): [Ljava.lang.Object;@43e6e460
07-12 09:23:17.513: INFO/System.out(574): [Ljava.lang.Object;@43e6e7b0
07-12 09:23:17.523: INFO/System.out(574): [Ljava.lang.Object;@43f10b58
07-12 09:23:17.553: INFO/System.out(574): [Ljava.lang.Object;@43f10eb0
传递后,打印出来显示有20条
07-12 09:23:17.553: INFO/System.out(574): 20
再打印只有一条记录,哎。烦躁啊
07-12 09:23:17.553: INFO/System.out(574): [Ljava.lang.Object;@43f112f0

解决方案 »

  1.   

    System.out.println(friends.size());你看看里面的值,是不是有空值哦,friends.toArray()会过滤空值的。lz你先debug下。
      

  2.   

     ---谢谢下面就是用message.obj传递之前的值哦,一共20条记录嘛,应该没有空值吧?55507-12 09:23:17.324: INFO/System.out(574): [Ljava.lang.Object;@43e35dd8
    07-12 09:23:17.363: INFO/System.out(574): [Ljava.lang.Object;@43e76500
    07-12 09:23:17.363: INFO/System.out(574): [Ljava.lang.Object;@43e76818
    07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43edf730
    07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43edfa50
    07-12 09:23:17.372: INFO/System.out(574): [Ljava.lang.Object;@43ec3b08
    07-12 09:23:17.383: INFO/System.out(574): [Ljava.lang.Object;@43ec3e30
    07-12 09:23:17.383: INFO/System.out(574): [Ljava.lang.Object;@43ec4158
    07-12 09:23:17.412: INFO/System.out(574): [Ljava.lang.Object;@43ec46b0
    07-12 09:23:17.423: INFO/System.out(574): [Ljava.lang.Object;@43ec49e0
    07-12 09:23:17.423: INFO/System.out(574): [Ljava.lang.Object;@43ec4d18
    07-12 09:23:17.443: INFO/System.out(574): [Ljava.lang.Object;@43f19c90
    07-12 09:23:17.453: INFO/System.out(574): [Ljava.lang.Object;@43f1a030
    07-12 09:23:17.453: INFO/System.out(574): [Ljava.lang.Object;@43f1a370
    07-12 09:23:17.473: INFO/System.out(574): [Ljava.lang.Object;@43e6ddc8
    07-12 09:23:17.473: INFO/System.out(574): [Ljava.lang.Object;@43e6e110
    07-12 09:23:17.493: INFO/System.out(574): [Ljava.lang.Object;@43e6e460
    07-12 09:23:17.513: INFO/System.out(574): [Ljava.lang.Object;@43e6e7b0
    07-12 09:23:17.523: INFO/System.out(574): [Ljava.lang.Object;@43f10b58
    07-12 09:23:17.553: INFO/System.out(574): [Ljava.lang.Object;@43f10eb0
      

  3.   


    int count = friends.size();
    for(int i =0 ;i < count; i++){
       System.out.println(i+"条数据"+friends.get(i));
    }楼主把你每条数据打印出来 我怀疑你的数据传过来的有问题 、、 
      

  4.   

    当然打印一条 friends.toArray()返回的一个对象Object[]
    System.out.println(friends.toArray()) 相当于System.out.println(friends.toArray().toString) 
    Object的toString是这样的返回类名和hashCode
    public String toString() { 
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
      

  5.   


    你应该重写WeiBoInfo的toString,再用System.out.println(friends.toString());
      

  6.   


    07-12 10:27:55.692: INFO/System.out(649): [Ljava.lang.Object;@43e77f10
    07-12 10:27:55.703: INFO/System.out(649): [Ljava.lang.Object;@43f197d0
    07-12 10:27:55.714: INFO/System.out(649): [Ljava.lang.Object;@43f19ac0
    07-12 10:27:55.723: INFO/System.out(649): [Ljava.lang.Object;@43e74380
    07-12 10:27:55.732: INFO/System.out(649): [Ljava.lang.Object;@43e6ee00
    07-12 10:27:55.732: INFO/System.out(649): [Ljava.lang.Object;@43e6f120
    07-12 10:27:55.732: INFO/System.out(649): [Ljava.lang.Object;@43e6e858
    07-12 10:27:55.744: INFO/System.out(649): [Ljava.lang.Object;@43e6eb80
    07-12 10:27:55.752: INFO/System.out(649): [Ljava.lang.Object;@43ed6d30
    07-12 10:27:55.752: INFO/System.out(649): [Ljava.lang.Object;@43ed7060
    07-12 10:27:55.752: INFO/System.out(649): [Ljava.lang.Object;@43e343f0
    07-12 10:27:55.762: INFO/System.out(649): [Ljava.lang.Object;@43e34728
    07-12 10:27:55.762: INFO/System.out(649): [Ljava.lang.Object;@43f1b338
    07-12 10:27:55.762: INFO/System.out(649): [Ljava.lang.Object;@43f1b678
    07-12 10:27:55.792: INFO/System.out(649): [Ljava.lang.Object;@43e71da0
    07-12 10:27:55.802: INFO/System.out(649): [Ljava.lang.Object;@43e720e8
    07-12 10:27:55.802: INFO/System.out(649): [Ljava.lang.Object;@43e36988
    07-12 10:27:55.802: INFO/System.out(649): [Ljava.lang.Object;@43e36cd8
    07-12 10:27:55.822: INFO/System.out(649): [Ljava.lang.Object;@43ee6948
    07-12 10:27:55.845: INFO/System.out(649): [Ljava.lang.Object;@43ee6ca0
    07-12 10:27:55.845: INFO/System.out(649): 20
    07-12 10:27:55.852: INFO/System.out(649): [Ljava.lang.Object;@43ec4268
    07-12 10:27:55.852: INFO/System.out(649): --------------------------
    07-12 10:27:55.852: INFO/System.out(649): 0条数据com.itcast.util.WeiBoInfo@43efe8c8
    07-12 10:27:55.852: INFO/System.out(649): 1条数据com.itcast.util.WeiBoInfo@43f197a8
    07-12 10:27:55.852: INFO/System.out(649): 2条数据com.itcast.util.WeiBoInfo@43e74060
    07-12 10:27:55.852: INFO/System.out(649): 3条数据com.itcast.util.WeiBoInfo@43e74358
    07-12 10:27:55.852: INFO/System.out(649): 4条数据com.itcast.util.WeiBoInfo@43e6edd8
    07-12 10:27:55.852: INFO/System.out(649): 5条数据com.itcast.util.WeiBoInfo@43e6f0f8
    07-12 10:27:55.852: INFO/System.out(649): 6条数据com.itcast.util.WeiBoInfo@43e6e830
    07-12 10:27:55.852: INFO/System.out(649): 7条数据com.itcast.util.WeiBoInfo@43e6eb58
    07-12 10:27:55.852: INFO/System.out(649): 8条数据com.itcast.util.WeiBoInfo@43ed6d08
    07-12 10:27:55.852: INFO/System.out(649): 9条数据com.itcast.util.WeiBoInfo@43ed7038
    07-12 10:27:55.852: INFO/System.out(649): 10条数据com.itcast.util.WeiBoInfo@43e343c8
    07-12 10:27:55.852: INFO/System.out(649): 11条数据com.itcast.util.WeiBoInfo@43e34700
    07-12 10:27:55.852: INFO/System.out(649): 12条数据com.itcast.util.WeiBoInfo@43f1b2b0
    07-12 10:27:55.852: INFO/System.out(649): 13条数据com.itcast.util.WeiBoInfo@43f1b650
    07-12 10:27:55.873: INFO/System.out(649): 14条数据com.itcast.util.WeiBoInfo@43e71d78
    07-12 10:27:55.873: INFO/System.out(649): 15条数据com.itcast.util.WeiBoInfo@43e720c0
    07-12 10:27:55.873: INFO/System.out(649): 16条数据com.itcast.util.WeiBoInfo@43e36960
    07-12 10:27:55.883: INFO/System.out(649): 17条数据com.itcast.util.WeiBoInfo@43e36cb0
    07-12 10:27:55.883: INFO/System.out(649): 18条数据com.itcast.util.WeiBoInfo@43ee68a0
    07-12 10:27:55.883: INFO/System.out(649): 19条数据com.itcast.util.WeiBoInfo@43ee6c78这个是什么问题呢?
      

  7.   

    没重写WeiBoInfo的toString,会调用Object类的toString返回类名和hashCodepublic String toString() {  
    return getClass().getName() + "@" + Integer.toHexString(hashCode());  
    }  
    就像上面打印的com.itcast.util.WeiBoInfo@43ee6c78
      

  8.   

    恩,恩,可是这个和setAdapter()方法有什么关系呢,之前数据没有用message.obj传递的时候,数据就能设置到listView里面去,传递以后就报空指针错误,真不知道数据哪里出了问题,因为是新手,见笑了十分感激各位热心指导
      

  9.   

    lz能否在提供点代码,比如handler里面怎么实现数据传递的,还有param[1]这什么东东
      

  10.   

    下面是service里面的run方法,启动新线程来下载数据,
    这个其实是用网上沈大海的那个源码改动一点。public void run() {
    // TODO Auto-generated method stub
        if(weibo==null)
        {   weibo=new Weibo();
         AccessToken at=OAuthReadUtil.readToken(this);
    if(at!=null)
         {weibo.setToken(at.getToken(), at.getTokenSecret());
         }
        }
    while(isrun)
    { Task lasttask=null;
      Log.d("core Logic", "..............run");
      synchronized(allTask)
      {
        if(allTask.size()>0)
        {
         lasttask=allTask.get(0);
        }
       
        doTask(lasttask);
      }
      try{Thread.sleep(1000);}catch(Exception e){}
    }
    }
        //执行任务
    public void doTask(Task task)
    {Message message=hand.obtainMessage();
     
     try{
      switch(task.getTaskID())
      {case Task.TASK_USER_LOGIN://用户登录
      
      
      
       break;
      case Task.TASK_GET_USER_HOMETIMEINLINE://获取用户首页微博信息
      
             UserInfo user=ConfigHelper.nowUser;
             OAuth auth=new OAuth();
             String url = "http://api.t.sina.com.cn/statuses/friends_timeline.json";
             List params=new ArrayList();
             params.add(new BasicNameValuePair("source", auth.consumerKey)); 
             HttpResponse response =auth.SignRequest(user.getToken(), user.getTokenSecret(), url, params);
             if (200 == response.getStatusLine().getStatusCode()){
                 try {
                     InputStream is = response.getEntity().getContent();
                     Reader reader = new BufferedReader(new InputStreamReader(is), 4000);
                     StringBuilder buffer = new StringBuilder((int) response.getEntity().getContentLength());
                     try {
                         char[] tmp = new char[1024];
                         int l;
                         while ((l = reader.read(tmp)) != -1) {
                             buffer.append(tmp, 0, l);
                         }
                     } finally {
                         reader.close();
                     }
                     String string = buffer.toString();
                     //Log.e("json", "rs:" + string);
                     response.getEntity().consumeContent();
                     JSONArray data=new JSONArray(string);
                     for(int i=0;i<data.length();i++)
                     {
                         JSONObject d=data.getJSONObject(i);
                         //Log.e("json", "rs:" + d.getString("created_at"));
                         if(d!=null){
                             JSONObject u=d.getJSONObject("user");
                             if(d.has("retweeted_status")){
                                 JSONObject r=d.getJSONObject("retweeted_status");
                             }
                             
                            
                             String id=d.getString("id");
                             String userId=u.getString("id");
                             String userName=u.getString("screen_name");
                             String userIcon=u.getString("profile_image_url");
                             Log.e("userIcon", userIcon);
                             String time=d.getString("created_at");
                             String text=d.getString("text");
                             Boolean haveImg=false;
                             if(d.has("thumbnail_pic")){
                                 haveImg=true;
                                 //String thumbnail_pic=d.getString("thumbnail_pic");
                                 //Log.e("thumbnail_pic", thumbnail_pic);
                             }
                             
                             if(wbList==null){
                                 wbList=new ArrayList<WeiBoInfo>();
                                 
                             }
                             WeiBoInfo w=new WeiBoInfo();
                             w.setId(id);
                             w.setUserId(userId);
                             w.setUserName(userName);
                             w.setTime(time);
                             w.setText(text);
                             
                             w.setHaveImage(haveImg);
                             w.setUserIcon(userIcon);
                             wbList.add(w);
                             System.out.println(wbList.toArray());
                         }
                     }
                     
                 }catch (IllegalStateException e) {
                     e.printStackTrace();
                 } catch (IOException e) {
                     e.printStackTrace();
                 } catch (JSONException e) {
                     e.printStackTrace();
                 } 
             }
          message.obj=wbList;
          
      break;         
              hand.sendMessage(message);
    } --------主线程回调--------------------------------------------------       
     public Handler hand=new Handler()
    { @Override
    public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    super.handleMessage(msg);
    switch(msg.what)
    {
    case Task.TASK_USER_LOGIN:

     IWeiboActivity ha=MainService.getActivityByName("LoginActivity");
         ha.refresh(LoginActivity.REF_LOGIN_RESULT,msg.obj);
         
     break;
    case Task.TASK_GET_USER_HOMETIMEINLINE://更新Weibo首页
         IWeiboActivity hha=MainService.getActivityByName("HomeActivity");
         hha.refresh(HomeActivity.REF_WEIBO,msg.obj);这边就调用到首页的微博Activity的refresh方法,里面两个参数,REF_WEIBO分别对应refresh(Object... param)的 param[0]和param[1].....
      

  11.   


    1.不能打印只能打印一条是没重写toString2.空指针问题 我试过在handleMessage传进的msg在处理完后,msg会自动重置,msg.obj会为null.
    可以试试把super.handleMessage(msg);放在handleMessage的最后面
    或者msg一传进来重新new个WeiBoInfo实例把msg.obj拷贝过来。
      

  12.   


    呵呵  看到就回了 有错误最好把错误Log也贴上来好看些
      

  13.   

    super.handleMessage(msg)就要放在handleMessage方法的末尾,最后由父类去处理消息
    下面这些代码就可以简化下了
    public void refresh(Object... param) {
     Log.d("ref", (String)param[0]);
     if(((String)param[0]).equals("REF_WEIBO"))
       {
       WeiBoAdapater adapter = new WeiBoAdapater(this,(ArrayList<WeiBoInfo>)param[1]);
       Msglist.setAdapter(adapter);
       }
      

  14.   

    呵呵用下面这个办法,得出的的wbList在初始值,赋值给msg.obj后,和初始化adater对象后,打印的值是一样的,是说明数据应该没错吧。错误信息我也po一下。
                  int count = wbList.size();
             for(int k =0 ;k < count; k++){
             System.out.println(k+"条未传递wbList数据"+wbList.get(k));
             }07-12 14:00:44.178: INFO/System.out(621): 0条未传递wbList数据com.itcast.util.WeiBoInfo@437a27b0
    07-12 14:00:44.178: INFO/System.out(621): 1条未传递wbList数据com.itcast.util.WeiBoInfo@437942f8
    07-12 14:00:44.178: INFO/System.out(621): 2条未传递wbList数据com.itcast.util.WeiBoInfo@437918e0
    07-12 14:00:44.188: INFO/System.out(621): 3条未传递wbList数据com.itcast.util.WeiBoInfo@4375cd58
    07-12 14:00:44.188: INFO/System.out(621): 4条未传递wbList数据com.itcast.util.WeiBoInfo@4383e3e8
    07-12 14:00:44.188: INFO/System.out(621): 5条未传递wbList数据com.itcast.util.WeiBoInfo@4383d320
    07-12 14:00:44.188: INFO/System.out(621): 6条未传递wbList数据com.itcast.util.WeiBoInfo@43823a00
    07-12 14:00:44.188: INFO/System.out(621): 7条未传递wbList数据com.itcast.util.WeiBoInfo@43821ee8
    07-12 14:00:44.198: INFO/System.out(621): 8条未传递wbList数据com.itcast.util.WeiBoInfo@438217c0
    07-12 14:00:44.198: INFO/System.out(621): 9条未传递wbList数据com.itcast.util.WeiBoInfo@4381f098
    07-12 14:00:44.198: INFO/System.out(621): 10条未传递wbList数据com.itcast.util.WeiBoInfo@4381c160
    07-12 14:00:44.198: INFO/System.out(621): 11条未传递wbList数据com.itcast.util.WeiBoInfo@43819790
    07-12 14:00:44.208: INFO/System.out(621): 12条未传递wbList数据com.itcast.util.WeiBoInfo@438176f8
    07-12 14:00:44.208: INFO/System.out(621): 13条未传递wbList数据com.itcast.util.WeiBoInfo@43813dd8
    07-12 14:00:44.208: INFO/System.out(621): 14条未传递wbList数据com.itcast.util.WeiBoInfo@4380d288
    07-12 14:00:44.208: INFO/System.out(621): 15条未传递wbList数据com.itcast.util.WeiBoInfo@437f23d0
    07-12 14:00:44.208: INFO/System.out(621): 16条未传递wbList数据com.itcast.util.WeiBoInfo@437ef5c8
    07-12 14:00:44.228: INFO/System.out(621): 17条未传递wbList数据com.itcast.util.WeiBoInfo@437c2d30
    07-12 14:00:44.228: INFO/System.out(621): 18条未传递wbList数据com.itcast.util.WeiBoInfo@437b58e8
    07-12 14:00:44.238: INFO/System.out(621): 19条未传递wbList数据com.itcast.util.WeiBoInfo@437a052007-12 14:00:44.258: INFO/System.out(621): 0条传递后friends数据com.itcast.util.WeiBoInfo@437a27b0
    07-12 14:00:44.258: INFO/System.out(621): 1条传递后friends数据com.itcast.util.WeiBoInfo@437942f8
    07-12 14:00:44.268: INFO/System.out(621): 2条传递后friends数据com.itcast.util.WeiBoInfo@437918e0
    07-12 14:00:44.268: INFO/System.out(621): 3条传递后friends数据com.itcast.util.WeiBoInfo@4375cd58
    07-12 14:00:44.268: INFO/System.out(621): 4条传递后friends数据com.itcast.util.WeiBoInfo@4383e3e8
    07-12 14:00:44.268: INFO/System.out(621): 5条传递后friends数据com.itcast.util.WeiBoInfo@4383d320
    07-12 14:00:44.268: INFO/System.out(621): 6条传递后friends数据com.itcast.util.WeiBoInfo@43823a00
    07-12 14:00:44.278: INFO/System.out(621): 7条传递后friends数据com.itcast.util.WeiBoInfo@43821ee8
    07-12 14:00:44.278: INFO/System.out(621): 8条传递后friends数据com.itcast.util.WeiBoInfo@438217c0
    07-12 14:00:44.278: INFO/System.out(621): 9条传递后friends数据com.itcast.util.WeiBoInfo@4381f098
    07-12 14:00:44.278: INFO/System.out(621): 10条传递后friends数据com.itcast.util.WeiBoInfo@4381c160
    07-12 14:00:44.299: INFO/System.out(621): 11条传递后friends数据com.itcast.util.WeiBoInfo@43819790
    07-12 14:00:44.299: INFO/System.out(621): 12条传递后friends数据com.itcast.util.WeiBoInfo@438176f8
    07-12 14:00:44.308: INFO/System.out(621): 13条传递后friends数据com.itcast.util.WeiBoInfo@43813dd8
    07-12 14:00:44.308: INFO/System.out(621): 14条传递后friends数据com.itcast.util.WeiBoInfo@4380d288
    07-12 14:00:44.308: INFO/System.out(621): 15条传递后friends数据com.itcast.util.WeiBoInfo@437f23d0
    07-12 14:00:44.318: INFO/System.out(621): 16条传递后friends数据com.itcast.util.WeiBoInfo@437ef5c8
    07-12 14:00:44.318: INFO/System.out(621): 17条传递后friends数据com.itcast.util.WeiBoInfo@437c2d30
    07-12 14:00:44.318: INFO/System.out(621): 18条传递后friends数据com.itcast.util.WeiBoInfo@437b58e8
    07-12 14:00:44.318: INFO/System.out(621): 19条传递后friends数据com.itcast.util.WeiBoInfo@437a0520
    07-12 14:00:44.328: INFO/System.out(621): 0条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437a27b007-12 14:00:44.338: INFO/System.out(621): 1条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437942f8
    07-12 14:00:44.338: INFO/System.out(621): 2条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437918e0
    07-12 14:00:44.338: INFO/System.out(621): 3条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4375cd58
    07-12 14:00:44.338: INFO/System.out(621): 4条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4383e3e8
    07-12 14:00:44.338: INFO/System.out(621): 5条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4383d320
    07-12 14:00:44.348: INFO/System.out(621): 6条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43823a00
    07-12 14:00:44.348: INFO/System.out(621): 7条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43821ee8
    07-12 14:00:44.348: INFO/System.out(621): 8条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438217c0
    07-12 14:00:44.358: INFO/System.out(621): 9条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4381f098
    07-12 14:00:44.358: INFO/System.out(621): 10条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4381c160
    07-12 14:00:44.368: INFO/System.out(621): 11条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43819790
    07-12 14:00:44.378: INFO/System.out(621): 12条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438176f8
    07-12 14:00:44.378: INFO/System.out(621): 13条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43813dd8
    07-12 14:00:44.378: INFO/System.out(621): 14条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@4380d288
    07-12 14:00:44.388: INFO/System.out(621): 15条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437f23d0
    07-12 14:00:44.388: INFO/System.out(621): 16条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437ef5c8
    07-12 14:00:44.388: INFO/System.out(621): 17条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437c2d30
    07-12 14:00:44.401: INFO/System.out(621): 18条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437b58e8
    07-12 14:00:44.401: INFO/System.out(621): 19条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@437a052007-12 14:00:44.408: ERROR/AndroidRuntime(621): Uncaught handler: thread main exiting due to uncaught exception
    07-12 14:00:44.418: ERROR/AndroidRuntime(621): java.lang.NullPointerException
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at com.itcast.ui.HomeActivity.refresh(HomeActivity.java:164) 这一行就是Msglist.setAdapter(adapter);
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at com.itcast.logic.MainService$1.handleMessage(MainService.java:340)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at android.os.Handler.dispatchMessage(Handler.java:99)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at android.os.Looper.loop(Looper.java:123)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at android.app.ActivityThread.main(ActivityThread.java:4203)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at java.lang.reflect.Method.invokeNative(Native Method)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at java.lang.reflect.Method.invoke(Method.java:521)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    07-12 14:00:44.418: ERROR/AndroidRuntime(621):     at dalvik.system.NativeStart.main(Native Method)
      

  15.   

    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>" + Msglist == null);
    System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>" + adapter== null);
    打印看下到底Msglist 和adapter这2个哪个是null
      

  16.   

    07-12 14:25:19.014: INFO/System.out(664): false
    07-12 14:25:19.032: INFO/System.out(664): false哎,欲哭无泪。The application has stopped unexpectedly,please try again.我都看呕心了。。呵呵
      

  17.   

    哈哈,哎奇怪了都不为null,报什么NullPointerException
      

  18.   


    可能对我来说永远是个迷了ORZ.....
      

  19.   


    //Adapterclass WeiBoAdapater extends BaseAdapter
    {   private AsyncImageLoader asyncImageLoader;
        private List<WeiBoInfo> wbList;
        Context context;
        public WeiBoAdapater(Context con,List<WeiBoInfo> list) {
    this.context=con;
    this.wbList=list;
    }@Override
    public int getCount() {
        return wbList.size();
    }@Override
    public Object getItem(int position) {
        return wbList.get(position);
    }@Override
    public long getItemId(int position) {
        return position;
    }@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        asyncImageLoader = new AsyncImageLoader();
        convertView = LayoutInflater.from(this.context).inflate(R.layout.itemview, null);
        WeiBoHolder wh = new WeiBoHolder();
        wh.wbicon = (ImageView) convertView.findViewById(R.id.ivItemPortrait);
        wh.wbtext = (TextView) convertView.findViewById(R.id.tvItemContent);
        wh.wbtime = (TextView) convertView.findViewById(R.id.tvItemDate);
        wh.wbuser = (TextView) convertView.findViewById(R.id.tvItemName);
        wh.wbimage=(ImageView) convertView.findViewById(R.id.contentPic);
        
        WeiBoInfo wb = wbList.get(position);
        if(wb!=null){
            convertView.setTag(wb.getId());
            wh.wbuser.setText(wb.getUserName());
            wh.wbtime.setText(wb.getTime());
            wh.wbtext.setText(wb.getText(), TextView.BufferType.SPANNABLE);        Drawable cachedImage = asyncImageLoader.loadDrawable(wb.getUserIcon(),wh.wbicon, new ImageCallback(){            @Override
                public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl) {
                    imageView.setImageDrawable(imageDrawable);
                }
                
            });                wh.wbicon.setImageDrawable(cachedImage);    }
        
        return convertView;
        }
      

  20.   

    这个问题不是今天的问题了,不然也不会跑到csdn劳师动众,呵呵,电脑每天都会关机的哈哈哈哈。
      

  21.   

    而且adapter里面数据也没问题哦,
                //-----------------------------------------------  
                WeiBoAdapater adapter = new WeiBoAdapater(HomeActivity.this,friends);
                //--------------------------------------------------
                int ct= adapter.getCount();
                for(int j=0;j<ct;j++){
                System.out.println(j+"条adpter初始化后wbList数据"+adapter.getItem(j));}
                //---------------------------------------------------------执行结果:
    07-12 15:00:30.399: INFO/System.out(771): 0条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43873cd8
    07-12 15:00:30.399: INFO/System.out(771): 1条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43873de0
    07-12 15:00:30.408: INFO/System.out(771): 2条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43873ea0
    07-12 15:00:30.408: INFO/System.out(771): 3条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43873f60
    07-12 15:00:30.408: INFO/System.out(771): 4条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874038
    07-12 15:00:30.418: INFO/System.out(771): 5条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438740f8
    07-12 15:00:30.418: INFO/System.out(771): 6条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438741b8
    07-12 15:00:30.418: INFO/System.out(771): 7条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874278
    07-12 15:00:30.418: INFO/System.out(771): 8条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874338
    07-12 15:00:30.418: INFO/System.out(771): 9条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438743f8
    07-12 15:00:30.428: INFO/System.out(771): 10条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438744b8
    07-12 15:00:30.428: INFO/System.out(771): 11条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874578
    07-12 15:00:30.438: INFO/System.out(771): 12条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874638
    07-12 15:00:30.438: INFO/System.out(771): 13条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874770
    07-12 15:00:30.438: INFO/System.out(771): 14条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874830
    07-12 15:00:30.438: INFO/System.out(771): 15条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438748f0
    07-12 15:00:30.448: INFO/System.out(771): 16条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@438749b0
    07-12 15:00:30.448: INFO/System.out(771): 17条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874a70
    07-12 15:00:30.448: INFO/System.out(771): 18条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874b30
    07-12 15:00:30.448: INFO/System.out(771): 19条adpter初始化后wbList数据com.itcast.util.WeiBoInfo@43874bf0
      

  22.   

    getView方法做如下修改看成不成
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        asyncImageLoader = new AsyncImageLoader();
        WeiBoHolder wh = null;
      if (null == convertView){
        convertView = LayoutInflater.from(this.context).inflate(R.layout.itemview, null);
        wh = new WeiBoHolder();
        wh.wbicon = (ImageView) convertView.findViewById(R.id.ivItemPortrait);
        wh.wbtext = (TextView) convertView.findViewById(R.id.tvItemContent);
        wh.wbtime = (TextView) convertView.findViewById(R.id.tvItemDate);
        wh.wbuser = (TextView) convertView.findViewById(R.id.tvItemName);
        wh.wbimage=(ImageView) convertView.findViewById(R.id.contentPic);
        convertView.setTag(wh);
      }else{
         wh = (WeiBoHolder)convertView.getTag();
      }
        WeiBoInfo wb = wbList.get(position);
        if(wb!=null){
            wh.wbuser.setText(wb.getUserName());
            wh.wbtime.setText(wb.getTime());
            wh.wbtext.setText(wb.getText(), TextView.BufferType.SPANNABLE);        Drawable cachedImage = asyncImageLoader.loadDrawable(wb.getUserIcon(),wh.wbicon, new ImageCallback(){            @Override
                public void imageLoaded(Drawable imageDrawable,ImageView imageView, String imageUrl) {
                    imageView.setImageDrawable(imageDrawable);
                }
                
            });                wh.wbicon.setImageDrawable(cachedImage);    }
        
        return convertView;
        }
      

  23.   

    hmm.......错误一样一样的,。还是谢谢兄弟了
      

  24.   

    请问你的 Msglist 被正确初始化了吗? 我怀疑 Msglist 就是个null的
      

  25.   

    while(isrun)
            { Task lasttask=null;
              Log.d("core Logic", "..............run");
              synchronized(allTask)
              {    
                if(allTask.size()>0) ///这里你能确保alltask的size大于0吗            {
                    lasttask=allTask.get(0);
                }
               
                doTask(lasttask);
              }
              try{Thread.sleep(1000);}catch(Exception e){}
      

  26.   

    我上面有尝试判断adapter和msglist的值都不是空值哦,这个问题奇怪的就是,如果我把获取数据的模块和weiboadapater放在一个activity里面就能成功setadapter,所以Msglist的初始化理论上应该没有问题
      

  27.   

    Task只是为了启动新线程,没有task的话程序根本就不会跳转吧。。我有在首页的activity的oncreat方法中添加task哦
      

  28.   

    今天无意调试了一下,终于发现问题了,只要是在refresh方法里调用到Msglist的地方就报空指针错误,看来肯定是他的错误了,检查了下代码,下面的代码原来我是放在onCreate方法里面声明的,移到refresh方法里面就ok了。我是不是又小白了。。一直以为是数据错误,绕了好大一圈。
    ListView Msglist=(ListView)findViewById(R.id.freelook_listview);感谢各位朋友指点。收获很多,
      

  29.   

    那为什么以前打印出是Msglist == null 返回 false?
    声明在onCreate和refresh里面不一样吗?它们不在一个类?
      

  30.   

    全都是声明在一个activity里面。我是这么声明的。先是声明了一个成员变量ListView Msglist。
    然后在onCreate方法里初始化:Msglist=(ListView)findViewById(R.id.freelook_listview)。最后在refresh方法里面调用
      

  31.   

    这个Activity里面我就申明了一个类,Adapter也是成员类的。
      

  32.   


    我擦。。哥 Msglist你没有定义成 类得成员变量。 这样定义相当于 Msglist变量只在onCreate 方法里有效。还是略奇葩了