在列表视图中访问特定项目的布局

时间:2014-09-10 15:54:03

标签: android android-layout listview adapter listactivity

在我的Android应用中,我的主Activity扩展了List Activity。我存储了名为Items的元素,它们的布局由itemLayout xml文件定义,我使用自定义适配器(称为ItemAdapter)将数据传输到Main Activity中的List View。在itemLayout中有一个ImageView,我的目的是在用户点击列表视图中的特定项目时更改其图像。在我看来,实现这一目标的最简单方法是访问特定项目(被点击的项目)布局,找到ImageView和调用方法setImageBitmap。如何“找到”点击项目的这种布局?我在方法中尝试了很多东西:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

}

但没有任何效果。我是否必须向ItemAdapter添加任何内容?或者可以在onListItemClick(…)中进行,但我不知道如何做到?

4 个答案:

答案 0 :(得分:4)

你正在以一种错误的方式思考它。适配器是一种将数据映射到视图的方法。因此,如果要更改特定视图查找给定位置的方式,则需要更改其关联数据,以便渲染的视图随后更改。试图直接修改视图有点违背了如何使用适配器。

因此,在您的情况下,当用户点击某个项目时。通过位置编号在适配器中找到该项目。然后更新项目并确保调用notifydataset。同时,适配器的getView()将处理显示相应的图像。

答案 1 :(得分:0)

据我所知,你需要修改点击的项目布局,对吧?使用onListItemClicked中的参数:

v.findViewById(<your_img_view_id>)

为了获得更好的性能,请使用视图持有者。

答案 2 :(得分:0)

按下onListItemClick的元素时会触发

ListView。如果要检索数据集中的元素,只需调用

即可
l.getItemAtPosition(position)

返回的值必须转换为特定对象

答案 3 :(得分:0)

是可以在adapter格式的自定义getView()课程中通过点击来更改图片视图位图

请参阅此代码

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

        View rowView = convertView;
        rowView = inflater.inflate(R.layout.playlist_item, null);

        final ImageView im = (ImageView) rowView.findViewById(R.id.favorite);
        im.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // Do your stuff here

            }
        });

        return rowView;
    }