我的活动中有超过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
都有相关的代码。
现在我尝试处理子视图的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
s。
然后我想知道我是否可以直接将代码绑定到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 :(得分: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());
}