View个类型对象中的setTag()getTag()等方法的主要用途是什么?

我认为可以将任意数量的对象与一个视图关联,这对吗?

推荐答案

假设您生成了一组相似的视图.可以分别 for each 视图设置OnClickListener:

button1.setOnClickListener(new OnClickListener ... );
button2.setOnClickListener(new OnClickListener ... );
 ...

然后,你必须 for each 视图创建一个唯一的onClick方法,即使它们做了类似的事情,比如:

public void onClick(View v) {
    doAction(1); // 1 for button1, 2 for button2, etc.
}

这是因为onClick只有一个参数,即View,它必须从封闭范围内的实例变量或最终局部变量获取其他信息.我们真正想要的是获得信息.

输入getTag/setTag:

button1.setTag(1);
button2.setTag(2);

现在我们可以对每个按钮使用相同的OnClickListener:

listener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        doAction(v.getTag());
    }
};

这基本上是一种让浏览量达到memories的方式.

Android相关问答推荐

Health Connect(Android 14):需要更新应用程序才能继续与Health Connect同步

具有数据类的LiveData不会在视图模型中更新

如何使禁用状态下的material 3按钮与启用状态下的 colored颜色 相同?

滚动屏幕时更改按钮外观

推断的类型是片段,但应为上下文

使用Android Jetpack Compose,为子Composable定义ViewModel是不是一种糟糕的做法?

Jetpack Compose-如何在进入新产品线之前删除单词?

如何判断堆肥是否为空?

如何在Jetpack Compose中向SearchBar添加边框

Jetpack Compose 使用 SavedStateHandle 发送返回结果不适用于 ViewModel 中注入的 SavedStateHandle

如何使用react native下载android中/data/data/[应用程序包名称文件夹]/files中的文件

retrofit2.HttpException: HTTP 401

减少Compose中可滚动选项卡之间的间距

在 kotlin 中动态添加 GridView

使用 Dagger Hilt 获取接口的所有实例

删除一对多关系室 Kotlin 中的所有值

Unity:Android 上随机接近零的 FPS 下降(提供了很多线索)

无法使用 Gradle 托管设备对基线配置文件运行测试

如何为具有不同屏幕尺寸但相同密度的手机创建响应式布局?

react-native-config 在发布版本中不起作用