Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 动态添加行,setOnClickListener文本视图_Android_Linker_Onclick_Textview_Rows - Fatal编程技术网

Android 动态添加行,setOnClickListener文本视图

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

我有一个for循环,每次打印出一行,其中包含一个TextView。我希望这个文本视图是可点击的,当点击时,它应该启动另一个活动,并发送一个带有意图的ID。但正是因为这个,我无法工作。所有链接都很好地显示在一个表中,文本视图是可点击的,但所有链接都会将我发送到具有相同ID的下一个活动,即最后一个链接的ID

下面是for循环内容的简化版本:

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是的。所以当我改变它时,它运行得很顺利=