将自定义属性绑定到安卓内部视图



我的活动中有超过 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;
        .....
    }
}

然后我不得不做太多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());
}

相关内容

  • 没有找到相关文章

最新更新