我在listView 中嵌入了button 并实现了onclick事件.程序运行的时候突然发现listView 中的onListItemClick()事件被屏蔽了,哪位大虾能解决下啊? 
请发源代码,谢谢, 

解决方案 »

  1.   

    解决办法就是,创建一个新的Adapter继承至BaseAdapter   ,重写getView方法,在getView方法中给button添加监听器 public class Task_list_single_item_adapter extends BaseAdapter   
    {   
     
       LayoutInflater inflater;   
       Context context;   
       public Task_list_single_item_adapter(Context context){   
           this.context=context;   
           inflater=LayoutInflater.from(context);   
       }   
        @Override  
        public int getCount()   
        {   
            return 2;   
        }   
      
        @Override  
        public Object getItem(int position)   
        {   
            return null;   
        }   
      
        @Override  
        public long getItemId(int position)   
        {   
            return position;   
        }   
      
        @Override  
        public View getView(int position, View convertView, ViewGroup parent)   
        {   
            final Holder holder;   
            if(convertView!=null)   
            {   
                holder=(Holder) convertView.getTag();   
            }else {   
                holder=new Holder();   
                convertView=inflater.inflate(R.layout.download_management_item, null);   
                holder.pause=(Button) convertView.findViewById(R.id.dmi_ib1_pause);   
                holder.trys=(Button) convertView.findViewById(R.id.dmi_ib2_recover);   
                holder.install=(Button) convertView.findViewById(R.id.dmi_ib3_install);   
                convertView.setTag(holder);   
            }   
            OnClickListener listener=new OnClickListener(){   
                @Override  
                public void onClick(View v)   
                {   
                    if(v==holder.pause){   
                        Toast.makeText(context, "pause", Toast.LENGTH_SHORT).show();   
                        holder.pause.setVisibility(View.GONE);   
                        holder.trys.setVisibility(View.VISIBLE);   
                        holder.install.setVisibility(View.GONE);   
                    }   
                    if(v==holder.trys){   
                        Toast.makeText(context, "try", Toast.LENGTH_SHORT).show();   
                        holder.pause.setVisibility(View.VISIBLE);   
                        holder.trys.setVisibility(View.GONE);   
                        holder.install.setVisibility(View.GONE);   
                    }   
                    if(v==holder.install)   
                        Toast.makeText(context, "install", Toast.LENGTH_SHORT).show();   
                           
                }   
            };   
            holder.pause.setOnClickListener(listener);   
            holder.trys.setOnClickListener(listener);   
            holder.install.setOnClickListener(listener);   
            return convertView;   
        }   
        class Holder{   
            public Button pause;   
            public Button trys;   
            public Button install;   
        }   
    }   另外提醒,如果在listview中添加了button而不能点击listview时,可以在layout布局中去掉button的焦点就可以了,这样listview中的linearlayout和button都可以点击了,最重要的是在linearLayout中加上如下代码
    android:descendantFocusability="blocksDescendants" 参考如下代码:注意红色部分<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:orientation="horizontal" 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:descendantFocusability="blocksDescendants">
            <ImageView 
                    android:id="@+id/img" 
                    android:layout_width="48dp"
                    android:layout_height="48dp" 
                    android:layout_margin="5dp"/>
            <LinearLayout 
                    android:orientation="vertical"
                    android:layout_width="205dp" 
                    android:layout_height="wrap_content">
                    <TextView 
                            android:id="@+id/title" 
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" 
                            android:textColor="#000000"
                            android:textSize="16dp"
                            android:layout_marginTop="10dip"/>
                    <TextView 
                            android:id="@+id/info" 
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content" 
                            android:textColor="#000000"
                            android:textSize="10dp"/>
            </LinearLayout>
            <Button 
                    android:id="@+id/btnDetails" 
                    android:layout_width="wrap_content" 
                    android:layout_height="wrap_content"
                    android:layout_gravity="center|right"
                    android:background="@drawable/list_button"
                    android:layout_marginRight="2dip" />
    </LinearLayout>