0

我有一个多选列表视图,我为它的适配器设计了一个布局文件。我在布局中有一个图像视图,当它被点击时,我想知道它是列表的哪个子项。我的意思是其父级的子级 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() 方法访问它?

4

3 回答 3

1

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

int childIndex = listView.getFirstVisiblePosition() - position;

如果您单击的是行视图的子视图(ListView 中使用的视图,由适配器创建),那么您也需要知道该行属于哪个位置 - 最简单的方法是将位置存储在子视图的标签中当你设置 onClickListener

于 2014-01-03T13:44:01.987 回答
0

基本上,首先您必须在适配器的 getView() 中为列表项的 ImageView 设置一个 onClickListener。

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

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

于 2014-01-03T14:08:57.973 回答
0

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

于 2014-01-03T14:18:08.753 回答