0

我创建了一个自定义列表视图,其中包含两个 ID 为 text1 和 text2 的 TextView。text1 显示一个地点,text2 显示一个描述。起初,当我实现 onListItemClicked 方法并将数据输入 toast 时,它在第一个 textview 中显示数据,这是 text1 中的位置。现在想从文本 2 中提取,因此在 S/O 上找到了某人建议的答案,但它现在只从第一个列表项的文本 2 中提取数据,而不是从我点击的地方提取数据。知道如何动态获取数据吗?不熟悉数据源,所以所有数据都在 2arrays 中,或者没有办法,我必须从包含描述的第二个数组中获取该位置的数据?
来自自定义列表类的一些代码:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    View parentView =(View)v.getParent();
    String text;
    text=((TextView) parentView.findViewById(R.id.text2)).getText().toString();
        Toast.makeText(this, text+" !here(description)",
        Toast.LENGTH_LONG).show();
}
4

1 回答 1

3

onListItemClick中的View v代表您单击的行的 ViewGroup。因此,您不需要getParent方法。更改您的代码如下:

@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
    String text;
    text=((TextView) v.findViewById(R.id.text2)).getText().toString();
    Toast.makeText(this, text+" !here(description)", Toast.LENGTH_LONG).show();
}

正如您所拥有的,父视图将引用整个 ListView 的视图层次结构。其中,会有多个视图,每个视图都包含一个 id == R.id.text2 的 TextView。我猜 findViewById 只会抓取它在该层次结构中找到的第一个,这就是为什么它总是从第一行返回值。

于 2013-10-20T08:19:13.457 回答