我的活动中有超过 20+ TextView
和ImageView
,如下所示:
<GridLayout id="layout">
<TextView android:id="@+id/t1" android:layout_width="wrap_content" .../>
<TextView android:id="@+id/t2" android:layout_width="wrap_content" .../>
......
</GridLayout>
每个TextView
或ImageView
都有一个相关的代码。
现在我尝试处理子视图的单击事件,逻辑相当简单,通过不同的代码从服务器获取数据。
我知道一般方法可能是这样的:
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());
}
这可能吗或任何其他选择?
你可以
用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());
}