java - 如何在线性布局中访问膨胀视图
问题描述
我使用布局充气器,用一些按钮和一些文本视图来充气线性布局。如何访问膨胀布局中的小部件?
例如:我有一个按钮,我想为它设置 onclick 监听器。通常,您使用“findViewById”声明按钮,然后设置侦听器。但是活动 xml 中不存在膨胀的按钮(线性布局在不同的 xml 中而不是在活动 xml 中)以使用“findViewById”找到它们的视图。
我的充气机代码:
LinearLayout item = (LinearLayout )findViewById(R.id.linear_layout_duel_basic_easy);
View child_1 = getLayoutInflater().inflate(R.layout.linear_layout_duel_1, null);
item.addView(child_1);
我想要膨胀的布局:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
谢谢你的帮助。
解决方案
它应该工作。这里没有什么特别的。
LinearLayout item = findViewById(R.id.linear_layout_duel_basic_easy);
for (int i = 0 ; i < 10; i++) {
View child = getLayoutInflater().inflate(R.layout.linear_layout_duel_1, null);
item.addView(child);
final int finalI = i;
child.findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "clicked = " + finalI, Toast.LENGTH_LONG).show();
}
});
}
推荐阅读
- python - 如何搜索子字符串,找到开头和结尾,然后检查该数据是否是工作日?
- java - 放置空值时出现 JSON-java 编译错误
- javascript - 如何检查用户输入是否为数字?
- selenium - 在同一 @Test 方法多次使用不同参数运行时出现问题
- java - 关闭 Java HTTP 客户端
- jquery - 如何在 jquery 中调用 c# 扩展方法?
- python - 将具有 UTC 偏移量的 Unix 时间戳转换为不同时区的 Python 日期时间?
- java - 为什么休眠会立即执行身份插入
- asp.net - 属性名称“@iot.id”无效;属性名称不得包含任何保留字符“:”、“.”、“@”
- laravel - 如何返回对象而不是数组中的对象