解决方案 »

  1.   

    很简单,的你看看你 在线程中取到的集合a。 是不是直接放到了adapter中了
      

  2.   

    问题是有时候报错,有时候不报啊。肯定放到adapter中了的。
      

  3.   

     list_comment, list_comment_child 这俩集合在线程中操作了吧?
      

  4.   

    因为那只是存在于一个微妙的时间差。  你上拉同时,返回数据, 你在上啦,再返回,你滑动listview的时候, 线程中得到的list会改变, 然后还没来得及通知到adapter的时候,你又在滑了,这只是在快速上啦或者下拉,时候才会出现,你上拉等加载完了,等等,再上啦,等会肯定不出现的
      

  5.   

    public void run() {
    ResultInfo info = mChailboardAction.getChailboardReplylist(subject_id, mLast, pull);
    if (info != null) {
    List<ChailboardReplylist> listReplylists = (List<ChailboardReplylist>) (info.getObj() == null ? null : info.getObj());
    mLast = info.getLast();
    if (listReplylists != null && listReplylists.size() > 0) {
    if (pull.equals("down")) {
    list_comment.clear();
    list_comment_child.clear();
    list.clear();
    }
    list.addAll(listReplylists);
    uiHandler.sendEmptyMessage(1001);
    }
    }else if(mLast.equals("0")){
    uiHandler.sendEmptyMessage(1000);
    }else{
    uiHandler.sendEmptyMessage(1005);
    }

    uiHandler.sendEmptyMessage(1004);
    }
    public void startRun(){
    if(thread == null)
    thread = new Thread(this);
    thread.start();
    uiHandler.sendEmptyMessage(1003);
    }
      

  6.   

    private void initCommentData() {
    // TODO Auto-generated method stub
    HashMap<String, Object> map;
    HashMap<String, Object> map1;
    if (list.size() > 0 && list != null) {
    for (int i = 0; i < list.size(); i++) {
    map = new HashMap<String, Object>();
    map.put("content", list.get(i).getContent());
    map.put("time", list.get(i).getCreate_time());
    map.put("name", list.get(i).getDisplay_name());
    map.put("pinglun", list.get(i).getReply_count());
    map.put("id", list.get(i).getId());
    map.put("num", list.get(i).getDigg());
    map.put("myDigg", list.get(i).getMyDigg());
    map.put("avatar", list.get(i).getAvatar());
    map.put("uid", list.get(i).getUid());
    map.put("num", list.get(i).getDigg());
    list_comment.add(map);
    List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();
    list_comment_child.add(rList);
    for (int j = 0; j < list.get(i).getReplyList().size(); j++) {
    if (list.get(i).getReplyList().size() > 0 && list.get(i).getId() == list.get(i).getReplyList().get(j).getTop_reply()) {
    map1 = new HashMap<String, Object>();
    map1.put("content", list.get(i).getReplyList().get(j).getContent());
    map1.put("time", list.get(i).getReplyList().get(j).getCreate_time());
    map1.put("displayName", list.get(i).getReplyList().get(j).getDisplay_name());
    map1.put("parentName", list.get(i).getReplyList().get(j).getParent_name());
    map1.put("pinglun", list.get(i).getReplyList().get(j).getReply_count());
    map1.put("id", list.get(i).getReplyList().get(j).getId());
    map1.put("num", list.get(i).getReplyList().get(j).getDigg());
    map1.put("myDigg", list.get(i).getReplyList().get(j).getMyDigg());
    map1.put("avatar", list.get(i).getReplyList().get(j).getAvatar());
    map1.put("uid", list.get(i).getReplyList().get(j).getUid());
    map1.put("parent_uid", list.get(i).getReplyList().get(j).getParent_uid());
    map1.put("num", list.get(i).getReplyList().get(j).getDigg());
    rList.add(map1);
    }
    }
    }
    }
    }
      

  7.   

    一句话,把线程中得到的个list 通过handler 发送到主线程中,   不知道你理解我说的么
      

  8.   

    initCommentData() 这个方法中的for 遍历的list  不要在线程中添加取到的list ,,你把线程中的list发送出来,在handler中添加到这个initCommentData()  中遍历的总list中。
      

  9.   

    是不是将子线程中查询得到list  发送个消息到主线程中来  然后在主线程中 用list.add()添加从子线程传过来的list然后在遍历
      

  10.   

    嗯是,你线程中的list,不要在主线程中使用它,这样不一致了。就会出那错。
      

  11.   

    那我需要将子线程中的那个listReplylists声明到外面去把