0

我有 20 多个TextViewImageView在我的活动中是这样的:

<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都有一个相关的代码。

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

我知道一般方法可能是这样的:

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;
        .....
    }
}

然后我要太多cases 。

然后我想知道我是否可以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());
}

这是可能的还是任何其他选择?

4

1 回答 1

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());
}
于 2013-11-04T09:02:50.847 回答