在AdapterView中查找子项

时间:2014-05-23 23:39:44

标签: android android-listview

(在Android中)我有一个带有AdapterView的列表,当然,视图有两个项目 - 字符串项和图像。用户单击字符串项(图像不可见),并调用我的ItemClickListener。我可以找出点击的位置。假设这是第三项(位置2,基数为0)。我想要的是指向适配器视图中图像的指针,以便我可以切换其可见性(图像是一个复选标记)。我似乎无法工作到AdapterView中的特定项目。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

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

因此,您在列表的每个项目上都有TextView和ImageView。我们假设它们在LinearLayout上。另外,你说“当用户点击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);

}

我认为演员阵容(ViewGroup)不是很安全,但我可能错了。我不知道。试试这个

如果监听器实际上是一个链接到List的OnItemClickListener()(因为我不确定我是否正确理解你所说的)那么这意味着当用户点击时,整个项目视图被发送给监听器,所以你必须这样做:

@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);
}

答案 1 :(得分:0)

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