如何知道项目的父项为哪个子项

时间:2014-01-03 13:31:47

标签: android listview get-childitem

我有一个多选列表视图,对于它的适配器,我设计了一个布局文件。我在布局中有一个图像视图,当它被点击时,我想知道列表的哪个孩子。我的意思是其父级的子ID,它是进一步使用方法list.getChildAt(???)的列表。谁能告诉我怎么做到这一点?

图像独立于列表视图,并且对于其onClick属性,我编写了一个不同的方法来更改图像视图资源...当我点击它时,如何知道特定imageView是哪个孩子?

在XML布局中我有:

<ImageView
    android:id="@+id/choice_image"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="deleteSelected" />

这是deleteSelected方法的一部分:

public void deleteSelected(View view) {

    icon = (ImageView)view.findViewById(R.id.choice_image);

    list.getChildAt(???); \\ To know which child the view is        

}

我已按如下方式设置适配器:

list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_choice_multiple,
            R.id.choice_text, terms) {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v = super.getView(position, convertView, parent);

        icon = (ImageView)v.findViewById(R.id.choice_image);

        icon.setImageResource(R.drawable.delete_off);

        icon.setTag(R.drawable.delete_off);

        return v;
    }
});

如何设置每个图像视图的ID,以便我可以通过deleteSelected()中的getID()方法访问它?

3 个答案:

答案 0 :(得分:1)

ListView有一个getFirstVisiblePosition方法,使用它可以根据它在列表视图中的位置(这是传递给侦听器的onItemClicked方法的参数)来计算子位置。

int childIndex = listView.getFirstVisiblePosition() - position;

如果您点击行视图的子项(ListView中使用的视图,由适配器创建),那么您需要知道该行所属的位置 - 最简单的方法是将位置存储在标记中设置onClickListener时的子项

答案 1 :(得分:0)

首先,您必须在适配器的getView()中为list-item的ImageView设置onClickListener。

现在使用onClickListener可以获得单击作为onClick()的函数参数的视图。为此视图(ImageView)对象设置不同的背景。

希望这很清楚。让我知道。

答案 2 :(得分:0)

简单回答:您写的是在ImageView上发生了点击。 ImageView与ListView无关。 因此,您的Click或ListView中的任何元素之间没有任何关系。 但是,当单击ImageView时,onClick会收到对ListView本身的引用。那么你想要实现什么?请更准确。