Android 动态添加行,setOnClickListener文本视图
我有一个for循环,每次打印出一行,其中包含一个TextView。我希望这个文本视图是可点击的,当点击时,它应该启动另一个活动,并发送一个带有意图的ID。但正是因为这个,我无法工作。所有链接都很好地显示在一个表中,文本视图是可点击的,但所有链接都会将我发送到具有相同ID的下一个活动,即最后一个链接的ID 下面是for循环内容的简化版本:Android 动态添加行,setOnClickListener文本视图,android,linker,onclick,textview,rows,Android,Linker,Onclick,Textview,Rows,我有一个for循环,每次打印出一行,其中包含一个TextView。我希望这个文本视图是可点击的,当点击时,它应该启动另一个活动,并发送一个带有意图的ID。但正是因为这个,我无法工作。所有链接都很好地显示在一个表中,文本视图是可点击的,但所有链接都会将我发送到具有相同ID的下一个活动,即最后一个链接的ID 下面是for循环内容的简化版本: TextView title = new TextView(this); title.setLayoutParams(new LayoutParams(Layo
TextView title = new TextView(this);
title.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
title.setText(titleLine);
title.setClickable(true);
title.setId(rows);
rows++;
title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(a.this, b.class);
myIntent.putExtra("id", idLine);
a.this.startActivity(myIntent);
}
});
contRight.addView(title);
我想问题是所有的文本视图看起来都一样,所以最后一个setOnClickListener可以在所有链接上工作。但是,我为每个标题添加了一个ID,代码如下:title.setIdrows;,所以他们都被认为是独一无二的
有谁能帮上忙吗谢谢 idLine不应该是v.getId吗?最好使这个值尽可能新鲜,这样您就不会读取旧值:在本例中,最后一行的值可能一直隐藏在idLine中。因此,直接从视图中获取值是最安全的方法
此外,标记可能比id更适合存储信息。您可以访问标记,并在任何视图上以标记形式存储任意数量的参数,而无需更改id:
title.setTag(rows);
后来:
intent.putExtra((Integer) v.getTag());
要使用键存储多个对象,可以使用:
title.setTag("rowid", rows);
然后使用以下方法检索:
intent.putExtra((Integer) v.getTag("rowid"));
然后,如果您的需求发生变化,您可以添加额外的键
在任何情况下,标记的目的都是存储信息以供以后检索,而id则是用作在层次结构中查找视图的标识符。idLine不应该是v.getId吗?最好使这个值尽可能新鲜,这样您就不会读取旧值:在本例中,最后一行的值可能一直隐藏在idLine中。因此,直接从视图中获取值是最安全的方法
此外,标记可能比id更适合存储信息。您可以访问标记,并在任何视图上以标记形式存储任意数量的参数,而无需更改id:
title.setTag(rows);
后来:
intent.putExtra((Integer) v.getTag());
要使用键存储多个对象,可以使用:
title.setTag("rowid", rows);
然后使用以下方法检索:
intent.putExtra((Integer) v.getTag("rowid"));
然后,如果您的需求发生变化,您可以添加额外的键
在任何情况下,标记的目的都是存储信息以供以后检索,而id则是用作在层次结构中查找视图的标识符。非常感谢您的帮助!我的想法完全错了。idLine应该是v.getId是的。所以当我改变它时,它运行得很顺利=非常感谢你的帮助!我的想法完全错了。idLine应该是v.getId是的。所以当我改变它时,它运行得很顺利=