0

我目前创建了一个需要自定义列表视图的应用程序。我的 listview 的一切都很好,但现在我需要知道,如何将 onClickListener 设置为在我的 list_row.xml 中定义的视图。我只想要整个项目上的 onclicklistener,以及在这个内部视图上。我附上一张图片来证明我的问题,因为它很难描述 >.< 图片(dropbox):https ://www.dropbox.com/s/72xdxuwz47vl7s5/problem.png

我需要一个在单击 [我的问题] 指示的视图时调用的函数。它是一个用图像填充的 ImageView。

4

2 回答 2

0

要在每一行中设置一个 OnClickListener,只需扩展您当前的 Adapter 并覆盖该getView()方法。在那里,您可以像往常一样定义特定的侦听器。

Romain Guy在此Google Talk中对此进行了详细讨论。

于 2013-01-08T22:05:38.177 回答
0

这是我之前做过的事情,看起来与您想要完成的事情非常相似。

首先,您onItemClickListener为您的ListView. 这将处理标准列表项点击(即,在列表项内部但在您关注的内部视图区域之外的点击)。您可以在代码中的多个位置执行此操作,但这onCreate()是一个常见的位置。

例子:

mListView.setOnItemClickListener( new OnItemClickListener() {
  @Override
  public void onItemClick( AdapterView<?> parent, View view, int position, long id ) {
    // Handle standard list item tap
    // ...
  }
} );

然后,您可以onClickListener在适配器的方法中声明内部视图所需的任何内容,getView()以处理内部视图上的单击/点击事件。

例子:

@Override
public View getView( int position, View convertView, ViewGroup parent ) {
  LinearLayout itemView;

  // Inflate layout XML, etc.
  // ...

  // Find subviews in layout
  ImageView innerView = (ImageView) itemView.findViewById( R.id.myInnerViewId );

  // ...

  // Set up onClickListener for inner view
  innerView.setOnClickListener( new OnClickListener() {
    @Override
    public void onClick( View v ) {
      // Handle inner view tap
      // ...
    }
  } );

  // ...
}
于 2013-01-08T22:11:03.690 回答