2012-12-12 62 views
0

目前我正在開發Android平板電腦上圖形用戶界面的項目。在一個屏幕上,我有幾個按鈕,我想使RelativeLayout可見/不可見。通過按鈕使佈局可見/不可見

我試過使用onClickListener,但在內部方法onClick不支持非最終變量,我用它來選擇每個按鈕和RelativeLayout

GUI是動態構建的,因爲它的整個結構取決於通過XML文件提供的數據。此外RelativeLayout使用TextView s接收他們的textes(sensordata喜歡溫度和溼度)的更新,這就是爲什麼使用動態方法。

你能給我一些關於這個問題的解決方法的想法嗎?幫助表示讚賞。如果所陳述的信息不足以滿足您的需求,只需詢問我會給您更多詳細信息。

目前,我嘗試這樣做:

持有要隱藏/顯示(並在onClickListener使用它們),或在事件處理中使用findViewById意見
private void setSensorPointOnClick(final ObjectView currentObjectView, final String currentLinkName) 
{ 
    for(int i=0; i<listofSensorDeviceButtons.size(); i++) 
    { 

     listofSensorDeviceButtons.get(i).setOnClickListener(
      new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        arrayClickedButton[i] = listofSensorDeviceButtons.get(i); 
        mainFrameLayout.removeAllViews(); 
        stepToObject(currentObjectView, currentObjectView.getName());    
       } 
      } 
     ); 

    } 
} 
+3

添加您的代碼使其更簡單。 –

+0

你有什麼嘗試?首先做一些谷歌,因爲這很簡單 –

+0

難道你只是建立一個持有人類,你需要的信息? – Flexo

回答

0

要麼使用領域。

另一種選擇是創建另一個最終的視圖變量,它將在設置onClickListener之前設置,以保存新創建的視圖的引用。

等等,總之,可能的解決方案我寫的是:

  1. 使用領域。
  2. 使用findViewById
  3. 使用額外的最終變量。
+0

當我在relativelayout中有動態數量的textviews時,可以使用findViewById嗎?據我所知,將id設置爲relativelayouts只能在xml中使用,這是靜態的。 – user1897842

+0

你可以使用setId作爲視圖。另外,您可以使用layoutInflater將視圖充滿xml。 –

+0

順便說一句,我認爲這是愚蠢的使用findViewById萬一你已經有一個參考視圖 –