【问题标题】:ExpandableListView custom items giving nullpointerexception on child viewsExpandableListView 自定义项在子视图上给出 nullpointerexception
【发布时间】:2014-05-08 07:51:09
【问题描述】:

好的,我现在遇到了一个大问题,我在尝试从我的子视图中获取数据时遇到空指针异常

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        View vi = convertView;
        final commentSubItem item = getChild(groupPosition, childPosition);
        System.out.println(item.user_img);

item.user_img 发出空指针异常。

class commentItem{
    int is_load_more = 0, position, last_time;
    public String user_id, user_fullname, user_username, user_img, comment_data, comment_bumps, total_replies, post_id, comment_id, isBumped;
    public List<commentSubItem> subComments = new ArrayList<commentSubItem>();

    public commentItem(int ism, int lt){
        is_load_more = ism;
        last_time = lt;
    }

    public commentItem(String uid, String ufn, String uun, String uim, String pd, String pb, String tr, String pid, String cid, String isB){
        user_id = uid;
        user_fullname = ufn;
        user_username = uun;
        user_img = uim;
        comment_data = pd;
        comment_bumps = pb;
        total_replies = tr;
        post_id = pid;
        comment_id = cid;
        isBumped = isB;
    }

}

   class commentSubItem{
        int is_load_more = 0, position, last_time;
        public String user_id, user_fullname, user_username, user_img, comment_data, comment_bumps, total_replies, post_id, comment_id, isBumped;

        public commentSubItem(int ism, int lt){
            is_load_more = ism;
            last_time = lt;
        }

        public commentSubItem(String uid, String ufn, String uun, String uim, String pd, String pb, String tr, String pid, String cid, String isB){
            user_id = uid;
            user_fullname = ufn;
            user_username = uun;
            user_img = uim;
            comment_data = pd;
            comment_bumps = pb;
            total_replies = tr;
            post_id = pid;
            comment_id = cid;
            isBumped = isB;
        }
    }

    public commentSubItem getChild(int groupPosition, int childPosition) {
         return comments.get(groupPosition).subComments.get(childPosition);
    }

我正在用以下内容填充数组列表:

                    publishProgress(new commentSubItem(commenterData.getString("user_id"),
                                                    commenterData.getString("user_fullname"),
                                                    commenterData.getString("user_username"),
                                                    commenterData.getString("user_img"),
                                                    commentData.getString("comment_data"),
                                                    commentData.getString("comment_bumps"),
                                                    main.getString("comment_total"),
                                                    post_id.toString(),
                                                    commentData.getString("comment_id"),
                                                    isBumped));

@Override
        protected void onProgressUpdate(commentSubItem... pI) {
            super.onProgressUpdate();
            adapter.addAdapterSubItem(group_id, pI[0]);


        public void addAdapterSubItem(int itx, commentSubItem item) {
            comments.get(itx).subComments.add(item);
        }

现在我无法弄清楚为什么 getChildView 为空,因为 commenterData.getString("user_img") 给出了一个值。谁能帮帮我?

编辑:当我将 groupPosition 传递给它时,group_id 是正确的值

【问题讨论】:

    标签: android adapter expandablelistview


    【解决方案1】:

    由于某种原因,使用 cmets.get(itx).subcmets.add(item) 等不起作用,我最终在 cmets 类中添加了 add subcomment 函数,然后从 addadaptersubitem 等中调用它们。不再工作正常空指针异常

    class commentItem{
        int is_load_more = 0, position, last_time;
        public String user_id, user_fullname, user_username, user_img, comment_data, comment_bumps, total_replies, post_id, comment_id, isBumped;
        public List<commentSubItem> subComments = new ArrayList<commentSubItem>();
    
        public commentItem(int ism, int lt){
            is_load_more = ism;
            last_time = lt;
        }
    
        public commentItem(String uid, String ufn, String uun, String uim, String pd, String pb, String tr, String pid, String cid, String isB){
            user_id = uid;
            user_fullname = ufn;
            user_username = uun;
            user_img = uim;
            comment_data = pd;
            comment_bumps = pb;
            total_replies = tr;
            post_id = pid;
            comment_id = cid;
            isBumped = isB;
        }
    
        public void addSubComment(commentSubItem e){
            subComments.add(e);
        }
    
        public void addSubComment(int index, commentSubItem e){
            subComments.add(index, e);
        }
    
        public void removeSubComment(commentSubItem e){
            subComments.remove(e);
        }
    
        public void removeSubComment(int e){
            subComments.remove(e);
        }
    
        public commentSubItem getSubComment(int e){
            return subComments.get(e);
        }
    }
    

    然后我就这样调用函数:

        public commentSubItem getChild(int groupPosition, int childPosition) {
             return comments.get(groupPosition).getSubComment(childPosition);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多