listview-ListView 获得点击 view 和相应的 row

问题描述

ListView 获得点击 view 和相应的 row

我想从 listview 子类的 onClick 事件中获取点击的 row。我能获取点击 item 但是不能在那个事件中点击 row。如何解决这个问题。
代码如下:

public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        Holder holder = new Holder();
        pos = position;
        if(convertView == null)
        {
            System.out.println(position);
            convertView= inflater.inflate(R.layout.list_layout,(ViewGroup)parent.findViewById(R.layout.list_layout));
            holder.form_name  = (TextView) convertView.findViewById(R.id.list_text);
            holder.form_details = (TextView) convertView.findViewById(R.id.button_text);
            holder.form_details.setOnClickListener(new OnClickListener(){
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    System.out.println(pos);
                                   //Here i am able to get clicked view but pos has always
                    // last value
                    System.out.println("button view clicked for "+cipt_list.get(pos).cipt);
                }});
            System.out.println(holder.form_name);
            convertView.setTag(holder);
        }
        else{
            holder = (Holder) convertView.getTag();
        }
        ciptDetails cipt = cipt_list.get(position);
        holder.form_name.setText(cipt.cipt);
        return convertView;
    }

解决方案

在点击监听器前设置:

holder.form_details.setId(position);

在 onClick 方法中使用 v.getId() 就会给出位置。

解决方案二:

一种方法,使用 OnItemClickListener

 list.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {

        }
    };

第二种,在 getView() 方法中获得位置,改成 "final int position",然后在 view's onClickListener() 中访问

public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    Holder holder = new Holder();
    pos = position;
     if(convertView == null)
    {
        System.out.println(position);
        convertView= inflater.inflate(R.layout.list_layout,(ViewGroup)parent.findViewById(R.layout.list_layout));

        holder.form_name  = (TextView) convertView.findViewById(R.id.list_text);
        holder.form_details = (TextView) convertView.findViewById(R.id.button_text);

        holder.form_details.setOnClickListener(new OnClickListener(){
            public void onClick(View v) {
                // you can access the position here
                System.out.println(pos);
                               //Here i am able to get clicked view but pos has always
                // last value
                System.out.println("button view clicked for "+cipt_list.get(pos).cipt);
            }});
        System.out.println(holder.form_name);
        convertView.setTag(holder);
    }
    else{
        holder = (Holder) convertView.getTag();
    }
    ciptDetails cipt = cipt_list.get(position);
    holder.form_name.setText(cipt.cipt);
    return convertView;
 }
时间: 2025-01-30 10:40:27

listview-ListView 获得点击 view 和相应的 row的相关文章

微博-android,Listview中item点击变色冲突

问题描述 android,Listview中item点击变色冲突 我想要像微博一样,当点击评论.转发.赞3个按钮的时候,只有按钮变色. 点击其他地方时,整个item都变色. 然后我为最外层的布局和"评论.点赞.转发"3个按钮的布局都设置了selector,但结果是无论点击item的哪个地方,都是整个布局都变色.怎么修改都不行,不知是哪里出了问题 <selector xmlns:android="http://schemas.android.com/apk/res/and

图片- Android ListView嵌套GridView点击事件的分发!!!!

问题描述 Android ListView嵌套GridView点击事件的分发!!!! 现在我在实现一个类似朋友圈的功能,布局需要用到ListView嵌套GridView.我也知道这样用不是太好,但这样能够实现需求所以就这样写了.如果哪位有更好的替换的方法,还请赐教.例如:我现在每行显示三张图片,但现在只有一张图片,所以就会有两张图片的位置会空出来.我为了要实现点击图片还能够看大图设置了GridView的onitemclick事件.问题来了,当我点击空白部分的时候,结果还是触发了GridView的

异常-求教关于listview内edittext点击修改内容的问题

问题描述 求教关于listview内edittext点击修改内容的问题 我现在在做一个listview, 想要实现的效果是:点击每个item一下,可以默认选中不带后缀名的内容,如点击内容为"pic.jpg"会选中"pic",并且键盘弹出可进行内容修改 我在listview的item里放的是edittext,并在adapter里对edittext进行了setOnFocusChangeListener的监听,为的是能点击后直接选中不带后缀名的字符串内容 但问题是,运行后

Android实现为ListView同时设置点击时的背景和点击松手之后的背景_Android

本文实例讲述了Android实现为ListView同时设置点击时的背景和点击松手之后的背景.分享给大家供大家参考.具体分析如下: 这里要达到的效果是, (1)点击ListView的item时会有指定的背景, (2)松手之后,刚才点击的item也会有指定的背景 实现(1)很简单:在xml中为ListView设置listSelector即可. 复制代码 代码如下: <ListView  android:id="@+id/pop_listview_left"  android:layo

listview-如何获取GridView或ListView中的每一个view

问题描述 如何获取GridView或ListView中的每一个view 如题我想在gridview中的某一个指定的view中设置一个抖动的动画,但我发现如果是这样写: bankAdapter = new CustomGridAdapter(MainActivity.this bankItems); bankGrid.setAdapter(bankAdapter); //动画 Animation shakeAnim = AnimationUtils.loadAnimation(MainActivi

Android中ListView的item点击没有反应的解决方法

如果stu_item.xml里面包括button或者checkbox等控件,默认情况下list的item会失去焦点,导致无法响应item的事件,最常用的解决办法是在stu_item.xml的布局文件中设置descendantFocusability属性. 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系. 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有

布局-listview中addHeaderView 点击事件

问题描述 listview中addHeaderView 点击事件 listview中addHeaderView 中头布局的多个点击响应事件怎么设置 解决方案 headView和footerView都可以响应onItemClick方法,headView的position为0, footerView的position最大. 不过可以给headView和footerView设置OnClickListener来覆盖OnItemClick,这样,你点击headview或者footerView将触发OnCl

suggestionsearch-百度地图 SuggestionSearch下ListView里Item点击定位

问题描述 百度地图 SuggestionSearch下ListView里Item点击定位 很急,点击任意一个Item后定位,如图效果: 求一段示例代码,非常感谢. 解决方案 你是想知道怎么实现还是想要一个demo啊? 百度地图api中说的很明白啊,你把地址通过检索传过去,会返回你经纬度,然后在地图上标记出来不就行了

listview-Android 自定义 ListView item 不能点击

问题描述 Android 自定义 ListView item 不能点击 我获得一个自定义的 ListView,然后使用不同的项目布局填充.问题是 OnItemClickListener 处理 ListView 只能捕捉 imageView 的点击事件,但是在其余的2个 textViews 上都不行.如何修改呢? <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q