2012-12-12 60 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万一你已经有一个参考视图 –