2013-11-04 64 views
0

我有超过20+ TextViewImageView在我的活动是这样的:绑定自定义属性到Android内部视图

<GridLayout id="layout"> 
    <TextView android:id="@+id/t1" android:layout_width="wrap_content" .../> 
    <TextView android:id="@+id/t2" android:layout_width="wrap_content" .../> 
    ...... 
</GridLayout> 

每个TextViewImageView有一个相关的代码。

现在我试图处理子视图的click事件,逻辑非常简单,通过不同的代码从服务器获取数据。

我知道一般的方法也许这样的:

findViewById("layout").setOnClickListener(this); 

@Override 
public void click(View v){ 
    switch(v.getId()){ 
     case R.id.t1 : 
      doSearch(1); 
     break; 
     case R.id.t2 : 
      doSearch(2); 
     break; 
     ..... 
    } 
} 

然后,我有太多的case秒。

然后,我不知道我是否可以直接在代码绑定到View,也许是这样的:

<TextView android:id="@+id/t1" android:layout_width="wrap_content" xx:code="1" .../> 
<TextView android:id="@+id/t2" android:layout_width="wrap_content" xx:code="2" .../> 

然后我就可以用这种方式处理事件:

@Override 
public void click(View v){ 
    doSearch(v.getCode()); 
} 

这是可能的,或者任何其他的选择?

+0

什么是需要seperatwly创建视图你为什么不能尝试我们一些类型的列表视图或GridView的婴儿 –

+0

由于一些电网将覆盖在多个列或行,所以我必须手动添加这些视图。 – hguser

+0

你可以把痛苦画出你的应用程序应该如何...我会给你最好的想法 –

回答

0

您可以使用tag。在你的XML:

<GridLayout id="layout"> 
    <TextView android:id="@+id/t1" android:layout_width="wrap_content" android:tag="1" .../> 
    <TextView android:id="@+id/t2" android:layout_width="wrap_content" android:tag="2" .../> 
    ...... 
</GridLayout> 

,并在您的活动:

@Override 
public void click(View v){ 
    doSearch((String)v.getTag()); 
}