Android 在AdapterView中查找子项

Android 在AdapterView中查找子项,android,android-listview,Android,Android Listview,当然,在Android中,我有一个带有AdapterView的列表,视图有两个项——一个字符串项和一个图像。用户单击字符串项,图像不可见,并且调用my ItemClickListener。我可以找到点击的位置。假设它是第三个项目位置2,基数0。我想要的是一个指向适配器视图中的图像的指针,这样我就可以切换其可见性。图像是一个复选标记。我似乎无法在AdapterView中找到特定的项目。感谢您的帮助。我的解决方案可能是黑客攻击,我不确定,但无论如何 因此,列表中的每个项目都有一个TextView和一

当然,在Android中,我有一个带有AdapterView的列表,视图有两个项——一个字符串项和一个图像。用户单击字符串项,图像不可见,并且调用my ItemClickListener。我可以找到点击的位置。假设它是第三个项目位置2,基数0。我想要的是一个指向适配器视图中的图像的指针,这样我就可以切换其可见性。图像是一个复选标记。我似乎无法在AdapterView中找到特定的项目。感谢您的帮助。

我的解决方案可能是黑客攻击,我不确定,但无论如何

因此,列表中的每个项目都有一个TextView和一个ImageView。让我们假设他们在一条直线上。另外,您说过当用户单击TextView时,我想您有一个链接到TextView的onClickListener。onClickListener为您提供TextView的引用。您可以在该视图上调用getParent,将其强制转换为ViewGroup,然后findViewById来检索图像。例如:

@Override
public void onClick(View view) // view = TextView
{
    ViewGroup vg = (ViewGroup) view.getParent(); // vg = LinearLayout
    ImageView iv = (ImageView) vg.findViewById(R.id.yourImageView);
    iv.setVisibility(View.INVISIBLE);

}
我认为演员组并不安全,但我可能错了。我不知道。试试这个

如果监听器实际上是链接到列表的监听器,因为我不确定我是否正确理解了您所说的内容,那么这意味着当用户单击时,整个项目视图将发送给监听器,因此您只需执行以下操作:

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
    //view = LinearLayout
    ImageView iv = (ImageView) view.findViewById(R.id.yourImageView);
    iv.setVisibility(View.INVISIBLE);
}

是的,所选的解决方案有点老套。AdapterView也是一个视图,因此您只需在Adapter中为您的ImageView设置一个唯一的标记,然后使用AdapterView.findViewWithTag来获取视图。

听起来很接近,让我试试看-谢谢!就这样。谢谢看看韩仁亮的回答。如果我的答案确实是一个黑客,那么这是坏的,你不应该这样做。你应该试试标签,这听起来是个更好的主意。另外,选择他的答案,而不是我的,以避免在人们的头脑中传播黑客:我不认为你的是坏的;这当然有效,但他的可能更合适,不过现在是凌晨1:30,我今晚不再尝试任何东西;我明天看他或她的(视情况而定)是否有效。谢谢视图上的标签对我来说是新的,让我来试验一下。仍然在做它的假日周末和所有的事情。仍然需要我遍历对象。不管怎样,如果不是在这里,计划在将来使用它们。