onView在ListView适配器中

时间:2014-03-14 18:20:43

标签: 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) {
            Toast.maketext(this,"Clicked.!!",Toast.LENGTH_SHORT).show();
        }
    });

但是不起作用。

任何想法。感谢。

2 个答案:

答案 0 :(得分:2)

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

listView.setAdapter(new PesquisaAdapter(this, anunciantescidades, this);

然后,在适配器的构造函数中,您将有一个OnClickListener来接收您传递的参数this(context):

public PesquisaAdapter(Context context, List<Anunciante> anunciantes, OnClickListener onClick1)

在适配器的getView方法中,您可以设置按钮的onClickListener:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = inflater.inflate(R.layout.your_custom_layout, null);
    ImageButton btn = (ImageButton ) v.findViewById(R.id.sharebutton);
    btn.setOnClickListener(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();
    }
}

希望它有所帮助!

答案 1 :(得分:0)

感谢您的帮助。

我可以这样解决。

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

这是我的持有人类。

 static class ViewHolder {
    public ImageView image;
    public TextView short_notice;
    public ImageButton share;
}

希望它有所帮助......!

感谢您的意见和答案。