我正在使用一个托管许多自定义视图的布局。每个自定义视图都有“myname:num”属性,该属性包含唯一数字值。
问题:如何通过“num”属性查找视图?通常我会使用findViewById()方法,但由于“android:id”不能是一个数字,我必须找到另一个解决方案。
布局定义:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myname="http://schemas.android.com/apk/res/com.example"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.example.custom.MyView
myname:num="17"
myname:type="2" />
<com.example.custom.MyView
myname:num="18"
myname:type="2" />
<com.example.custom.MyView
myname:num="19"
myname:type="2" />
</LinearLayout>
</LinearLayout>
答案 0 :(得分:1)
为每个视图指定一个ID,然后在您的活动中,您可以使用
动态调用每个视图int dynamicId = getResources().getIdentifier("*unique_id*", "id", "*package_name*");
findViewById(dynamicId);
因此,如果您将每个增量标识为view_1
,view_2
,... view_numViews
,则可以使用类似循环的内容动态获取它们
for(int i = 1; i <= numViews; i ++){
int dynamicId = getResources().getIdentifier("view_" + i, "id", "*package_name*");
MyView view = (MyView) findViewById(dynamicId);
}