Android 为同一视图分配不同的ID

Android 为同一视图分配不同的ID,android,android-studio,view,Android,Android Studio,View,一个父线性布局被膨胀,子视图被添加到for循环中。 但是所有子视图都有相同的id。我可以通过v.getId()找到id,然后将id硬编码到案例“子视图的id”中。但id可能会在另一部手机上更改。 在我的例子中,所有ID都是相同的,手动设置它们可能也是不好的做法。我想通过onClick(View v)-方法调用子视图,但无法正确获取id。 我添加了一个树状视图以进行说明: @覆盖 创建时的公共void(Bundle savedInstanceState){ //扩展现有父类的方法 super.on

一个父线性布局被膨胀,子视图被添加到for循环中。 但是所有子视图都有相同的id。我可以通过
v.getId()
找到id,然后将id硬编码到
案例“子视图的id”
中。但id可能会在另一部手机上更改。
在我的例子中,所有ID都是相同的,手动设置它们可能也是不好的做法。我想通过
onClick(View v)
-方法调用子视图,但无法正确获取id。
我添加了一个树状视图以进行说明:

@覆盖
创建时的公共void(Bundle savedInstanceState){
//扩展现有父类的方法
super.onCreate(savedInstanceState);
LayoutFlater充气器=(LayoutFlater)getSystemService(Context.LAYOUT\u充气器\u服务);
LinearLayout父项=(LinearLayout)充气器充气(R.layout.mainbase,null);
对于(int i=0;i<4;i++){
查看自定义=充气机。充气(R.layout.identifierplate,null);
开关(一){
案例0:{
//为第一个设置布局图像和文本
ImageView传感器读数=(ImageView)custom.findViewById(R.id.sensor_图标);
SensorReadout.setImageResource(R.drawable.ic_启动器);
TextView传感器名称=(TextView)custom.findViewById(R.id.sensor\u名称);
sensor_name.setText(R.string.sr_1);
TextView传感器描述=(TextView)custom.findViewById(R.id.sensor\u描述);
sensor_description.setText(R.string.sr_2);
custom.setOnClickListener(这个);
parent.addView(自定义);
打破
}
案例1:{
//执行与案例0相同的操作,但不同的文本/图像
custom.setOnClickListener(这个);
parent.addView(自定义);
打破
}      
默认值:{//默认值已在XML中设置
}
}
}
setContentView(父级);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例0:{
意向意向=新意向(第一类);
星触觉(意向);
打破
}
案例1:{
意向意向=新意向(第二类);
星触觉(意向);
打破
}
默认值:{
int id=v.getId();
String id=String.valueOf(id);
Toast.makeText(this,ids,Toast.LENGTH_SHORT).show();//错误:所有文件都具有相同的id
}
}
}

如何使用childview的setTag和getTag方法

然后,您可以检查getTag==第一个子项,并根据您的逻辑编写代码

在for循环中,可以使用setTag with i变量设置标记。

将我指向正确的方向 我在.java中添加了:

custom.setId(R.id.id_v_2);
添加到ids.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_v_0" />
    <item
        type="id"
        name="id_v_1" />
</resources>

改用Listview、gridview或可扩展Listview.Is
custom.setId(i)不为你工作?好主意,但我坚持使用ID,unf。我不能推翻你的回答:(
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_v_0" />
    <item
        type="id"
        name="id_v_1" />
</resources>
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.id_v_0: { ...