2014-11-21 47 views
0

我有一個訪問CompoundButton父視圖的問題。訪問交換機父視圖中的按鈕android

((Switch) convertView.findViewById(R.id.push_switch)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

     if (rowItem.getPush().equals("N")) { 
      rowItem.setFollow(true); 
      rowItem.setPush("Y"); 
      setFollowTickGreen(rowItem, convertView); 
     } 
     else if (rowItem.getPush().equals("Y")) { 
      rowItem.setPush("N"); 
     } 

    } 
}); 

此代碼顯示了我的開關按鈕,但我需要訪問convertView當按下這個按鈕到別的改變一些東西。

這是在一個適配器內完成的,因此交換機代碼位於getView函數中,但setFollowTickGreen不在該函數中。

我不能將convertView設置爲final,因爲它在整個getView函數中發生變化。 我知道compoundButton是交換機,但交換機處於與我想要訪問Button相同的級別。

有沒有這樣做的一般方法? 對於其他情況,以及我假設的複合按鈕,這將是類似的。

謝謝。

回答

0

這是否幫助..

final View tmpConvertView=convertView; 
((Switch) convertView.findViewById(R.id.push_switch)).setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

     if (rowItem.getPush().equals("N")) { 
      rowItem.setFollow(true); 
      rowItem.setPush("Y"); 
      setFollowTickGreen(rowItem, tmpConvertView); 
     } 
     else if (rowItem.getPush().equals("Y")) { 
      rowItem.setPush("N"); 
     } 

    } 
}); 
+0

利用這一點,你能不能再進行更改內tmpConvertView什麼? – sark9012 2014-11-21 11:11:38

+0

Ofcourse你可以,** final **在引用變量(例如tmpConvertView)中僅僅暗示着變量保存的引用值不能被改變。但是你可以添加一個視圖刪除孩子並且做任何你希望的對象的引用值指向:) – humblerookie 2014-11-21 11:39:41

+0

是的,我和你在一起,非常有意義。它只是說你不能改變tmpConvertView指向的引用。不是什麼內容。乾杯,我會嘗試! – sark9012 2014-11-21 11:45:30