Android onClick-in-ListView适配器

Android onClick-in-ListView适配器,android,listview,android-listview,Android,Listview,Android Listview,我需要在ListView中添加的按钮上捕获onclick事件。我正在为我的ListView使用适配器 这是我的密码 ImageButton s = (ImageButton) convertView.findViewById(R.id.sharebutton); s.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) {

我需要在ListView中添加的按钮上捕获onclick事件。我正在为我的ListView使用适配器

这是我的密码

 ImageButton s = (ImageButton) convertView.findViewById(R.id.sharebutton);
    s.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.maketext(this,"Clicked.!!",Toast.LENGTH_SHORT).show();
        }
    });
但是不起作用


任何想法。谢谢。

您需要创建自定义适配器,将应用程序的上下文作为参数传递,以设置单击:

listView.setAdapter(new PesquisaAdapter(this, anunciantescidades, this);
然后,在适配器的构造函数中,您将有一个OnClickListener来接收您传递的参数
this
(上下文):

public PesquisaAdapter(Context context, List<Anunciante> anunciantes, OnClickListener onClick1)
在java中,您可以实现onClickListener,然后使用按钮执行所需操作:

@Override
public void onClick(View v) {
    if(yourbutton.getId() == v.getId()){    
        final int position = listView.getPositionForView((LinearLayout)v.getParent());            
        Toast.maketext(this,"Clicked on position " + position + ".!!",Toast.LENGTH_SHORT).show();
    }
}
希望有帮助

谢谢你的帮助

我可以这样做

 holder.share.setFocusable(false);
    holder.share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.maketext(this,"Clicked.!!",Toast.LENGTH_SHORT).show();
        }
    });
这是我的Holder课程

 static class ViewHolder {
    public ImageView image;
    public TextView short_notice;
    public ImageButton share;
}
希望它能帮助


感谢您的评论和回答。

是否可能重复?实际上,适配器有一个getContext()方法,不需要传递它。
 static class ViewHolder {
    public ImageView image;
    public TextView short_notice;
    public ImageButton share;
}