无法从android交换机中访问视图

无法从android交换机中访问视图,android,Android,我在一个按钮上使用了一段非常类似的代码,如下所示setOnClickListener,视图被传递 ((Switch) convertView.findViewById(R.id.push_switch)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButto

我在一个按钮上使用了一段非常类似的代码,如下所示
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),而按钮上没有这样做。只是对那件事很感兴趣


谢谢:)

正如@Mike M评论的那样,复合按钮就是开关。回调方法onCheckedChanged正在向您传递对触发回调的CompoundButton的引用……在本例中,是您的开关

您可以这样做:

compoundButton.toggle();

“…视图未通过…”-
compoundButton
是开关。我以前从未使用过compoundButton,所以我可能误解了它是什么。如果我有一个开关,我需要在状态改变时激活回调。我会用我必须做的吗?因为我需要访问此的父级中的交换机?
CompoundButton
交换机
类的基类。在侦听器方法中,将
compoundButton
强制转换为
Switch
,而不是在
convertView
上尝试
findViewById()
。这将是接收事件的
开关
对象。在编写它时刚刚发现!你想回答这个问题还是我应该删除它?现在看来这阻止了我改变位置!现在卡在开关上了!您可能不想切换它-我只是在遵循您的代码。从逻辑上讲,您的代码所说的是“当切换开关时,将其切换回”是的,我刚刚调试了它,并意识到我不需要它切换,因为用户自己在物理上切换它!无论如何谢谢你!