我目前正在创建一个需要自定义列表视图的应用。我的listview的一切都很好,但现在我知道如何将onClickListener设置为我的list_row.xml中定义的视图。我只想在整个项目上使用onclicklistener,并在这一个内部视图上。我附上一张图片来展示我的问题,因为它很难描述>。< 图片(保管箱):https://www.dropbox.com/s/72xdxuwz47vl7s5/problem.png
我需要一个在点击视图时调用的函数[我的问题]指示。它是一个充满图像的ImageView。
答案 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
// ...
}
} );
// ...
}