Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 有关ListView自定义行布局项的onClick()事件的帮助_Android_Android Listview - Fatal编程技术网

Android 有关ListView自定义行布局项的onClick()事件的帮助

Android 有关ListView自定义行布局项的onClick()事件的帮助,android,android-listview,Android,Android Listview,我有一个ListView,它的行由我格式化。每行都混合了ImageView和TextView。 我还实现了自己的适配器,并且能够通过它绘制每一行 现在,我想要这样的东西- <ImageView android:id="@+id/user_image" android:padding="5dip" android:layout_height="60dip" android:layout_width="60dip" android:clickable="tr

我有一个ListView,它的行由我格式化。每行都混合了ImageView和TextView。 我还实现了自己的适配器,并且能够通过它绘制每一行

现在,我想要这样的东西-

<ImageView android:id="@+id/user_image"
    android:padding="5dip" 
    android:layout_height="60dip" 
    android:layout_width="60dip"
    android:clickable="true"
    android:onClick="uImgClickHandler"/> 
  • 用户在ImageView上单击(不在行的任何其他位置,但只有此ImageView应响应单击)
  • 我了解了单击ImageView的行的位置
为此,我尝试了很多方法,并希望我的代码尽可能高效(在过度杀伤力方面)。 目前,我只能捕获特定ImageView上的单击事件,但我不知道单击了哪一行

我在XML行中提供了如下属性-

<ImageView android:id="@+id/user_image"
    android:padding="5dip" 
    android:layout_height="60dip" 
    android:layout_width="60dip"
    android:clickable="true"
    android:onClick="uImgClickHandler"/> 
我可以得到父行(也许),但不确定如何进一步。 有人能帮忙吗?

请看这个,
我只是写代码给你的想法,不是在正确的格式

 class youaddaper extends BaseAdapter{

   public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflate = LayoutInflater.from(context);
        View v = inflate.inflate(id, parent, false);

      ImageView imageview = (ImageView) v.findViewById(R.id.imageView);
        imageview.setOnClickListener(new imageViewClickListener(position));
      //you can pass what ever to this class you want,
      //i mean, you can use array(postion) as per the logic you need to implement 
   }
   class imageViewClickListener implements OnClickListener {
   int position;
    public imageViewClickListener( int pos)
        {
            this.position = pos;
        }

    public void onClick(View v) {
      {// you can write the code what happens for the that click and 
       // you will get the selected row index in position
     }
}
}


希望它对您有所帮助

您可以这样做: 在适配器的getview方法中 按钮btn1=(按钮)convertView.findViewById(R.id.btn1); btn1.setOnClickListener(mActivity)

此外,您还可以在活动中处理onclick事件,, 对于此处活动的上下文,mActivity只需在适配器的构造函数中传递this,并在此处将其强制转换为活动,如 MyActivity mActivity=(MyActivity)上下文; 在适配器中。
thanx

这似乎适用于项目布局包含带有android:onClick=“editImage”的ImageView的ListActivity:


另一个选项是使用视图的方法
setTag()
getTag()
。您可以在getView中这样设置它:

imageView.setTag(new Integer(position));
然后在
onClick()
中,您可以通过以下方式找到标记:

Integer tag = v.getTag();
然后,这将用于将图像视图与listview项的位置关联起来


请注意,如果listview可能从中间丢失项目,则此方法会出现问题,从而导致项目位置在listview的生命周期内发生变化。

您希望实现什么?是否要在其他行窗口小部件上设置一些属性?我希望用户仅单击imageview,而不是该行的任何其他位置,并且基于单击的imageview,我希望知道该行的位置,然后在该位置的数据源中查找,获取一些信息并启动另一个活动。顺便说一句,下面的答案很好地解决了这个问题。这确实有帮助。我要试试,它奏效了。但可能会增加一些开销,因为它会为每个imageview分离对象。稍后将对其进行优化。谢谢!:)这对我也很有用。我对你关于创建独立对象的评论很感兴趣,还有什么更好的方法。我看到的几个示例总是在内部创建侦听器对象。这是一个有效的选项,但当单击此按钮并将控件传递给驻留在活动中的我的中心方法时,它对此按钮所在的行没有足够的了解,这使它变得困难。
Integer tag = v.getTag();