内部视图上的自定义列表视图onclicklistener

时间:2013-01-08 21:57:40

标签: java android xml

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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
      // ...
    }
  } );

  // ...
}