2012-04-08 38 views
1

块引用安卓ExpandableListView - NullPointerException异常

我在android系统

此使用ExpandableListView是getChildView在适配器类代码:

@Override 
    public View getChildView(int groupPosition, int childPosition, 
      boolean isLastChild, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     if (convertView == null) { 

      LayoutInflater inflater = (LayoutInflater) myContext 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = inflater.inflate(R.layout.childrow, null); 
      holder = new ViewHolder(); 

      holder.tv = (TextView) convertView 
        .findViewById(R.id.textView1); 
          // I added this line of code 
       holder.stop = (Button) convertView.findViewById(R.id.button3); 

      holder.position = groupPosition; 
      convertView.setTag(holder); 
      holder.stop.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

       ViewHolder holder = new ViewHolder(); 
       holder = (ViewHolder) v.getTag(); 

        int position = 0; 

         position = holder.position; ************* here 

        System.out.println("coolapse tag " + position); 

        expList.collapseGroup(position); 


       } 
      }); 

     } else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     return convertView; 
    } 

它给NullPointerException异常的线上标有** 有什么问题?

回答

1

什么是holder.stopholder.stop不是您设置标签的视图,所以当您尝试执行v.getTag()时,您会在holder中得到空值(顺便说一下,我没有看到holder.stop正在初始化)。不知道你要去的确切内容,但一个办法解决它是设置在支架上stop视图,以及:

convertView.setTag(holder); 
holder.stop.setTag(holder); 
holder.stop.setOnClickListener(.... 
+0

这是一类 \t静态类ViewHolder { \t \t \t \t按钮停止; \t \t TextView tv; \t \t int position; \t} – Developer 2012-04-08 18:16:45

+0

您不能使用静态类,每个视图需要一个持有者实例。 – dmon 2012-04-08 18:22:55

+0

所以我应该用什么? – Developer 2012-04-08 18:25:59

相关问题