Android:如何为ListView的List项中的Button设置onClick事件

Sag*_*r D 73 android listview

我想为onClick项目中使用的按钮添加事件Listview.如何onClick为列表项中的按钮提供事件.

muk*_*esh 93

在适配器类中

public View getView(final int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = getLayoutInflater();
    View row = inflater.inflate(R.layout.vehicals_details_row, parent, false);
    Button deleteImageView = (Button) row.findViewById(R.id.DeleteImageView);
    deleteImageView.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            //...
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

但是你可以得到一个问题 - listView行不可点击.解:

  • 使ListView可聚焦 android:focusable="true"
  • 按钮不可聚焦 android:focusable="false"

  • 具有可聚焦性的盐的+1!谢谢) (21认同)
  • ListView仅响应点击行,但Button将停止焦点.当我们添加checkbox,imageview或按钮时,Listview停止响应点击 (2认同)

Ner*_*een 64

您可以onClick在自定义适配器的getView方法中设置事件..
请查看链接http://androidforbeginners.blogspot.it/2010/03/clicking-buttons-in-listview-row.html

  • 不应在适配器中完成UI操作或侦听器.如果我想把它带到调用活动.我该怎么做? (7认同)

小智 12

试试这个,

public View getView(final int position, View convertView,ViewGroup parent) 
{
   if(convertView == null)
   {
        LayoutInflater inflater = getLayoutInflater();
        convertView  = (LinearLayout)inflater.inflate(R.layout.YOUR_LAYOUT, null);
   }

   Button Button1= (Button)  convertView  .findViewById(R.id.BUTTON1_ID);

   Button1.setOnClickListener(new OnClickListener() 
   { 
       @Override
       public void onClick(View v) 
       {
           // Your code that you want to execute on this button click
       }

   });


   return convertView ;
}
Run Code Online (Sandbox Code Playgroud)

它可能会帮助你......

  • 每个convertView只能设置一个ClickListener (3认同)