无法从交换机内部访问视图

时间:2014-11-20 16:22:42

标签: android

我在按钮上使用了与下面非常类似的代码setOnClickListener,并且视图已通过。

((Switch) convertView.findViewById(R.id.push_switch)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
     if(rowItem.getPush().equals("N")){
         ((Switch) convertView.findViewById(R.id.push_switch)).toggle();
         rowItem.setPush("Y");
     }
     else if(rowItem.getPush().equals("Y")){
         ((Switch) convertView.findViewById(R.id.push_switch)).toggle();
         rowItem.setPush("N");
     }
   }
});

在上面的代码中,视图没有通过,所以如何访问它以更改放置convertView的位置。

对于这个问题并不重要的边查询是为什么当按钮没有发生时,第一行被转换为(Switch)。只是对那个感兴趣!

谢谢:)

1 个答案:

答案 0 :(得分:1)

正如@Mike M评论的那样,compoundButton是Switch。回调方法onCheckedChanged正在向您传递一个引发回调的CompoundButton的引用......在本例中是您的Switch。

你可以这样做:

compoundButton.toggle();