znl_12 2013-04-09 07:46 采纳率: 0%
浏览 2892
已采纳

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;
    }
  • 写回答

2条回答

  • 问答小助手 2013-04-09 08:57
    关注

    在点击监听器前设置:

    holder.form_details.setId(position);
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大