在列表项中加入按钮的话, 点击按钮时, 不会触发列表项点击事件, 也不会触发按钮点击事件. 
直到这个活动结束的一刹那才会响应之前的点击事件.我也知道列表项中每个控件的touch事件是正常的,可以勉强用来代替点击事件,但终归不太爽...谁知道怎样让按钮点击事件生效?

解决方案 »

  1.   

    找出原因了, 原来 android:layout_height="wrap_content" 时, 点击按钮会无效
      

  2.   

    你说的android:layout_height="wrap_content"是ListView的,还是ListView中的button
      

  3.   

    android:layout_height="wrap_content"  这个是怎么出错的呢。
      

  4.   

    是指ListView的<ListView android:id="@+id/listView1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    />
      

  5.   

    假如你的ListView的android:layout_height属性不设置为fill_parent,会出现一些bug,我也不知道为什么会这样,举个例子:当android:layout_height属性设置为wrap_content那么ListView的最后一根分割线不能显示,即使设置了android:footerDividersEnabled="true",也不能显示最后一根分割线。解决问题就好了,记住这个方法,下次可能用得着
      

  6.   

    1.在listview item的布局文件的根元素中,添加    android:descendantFocusability="blocksDescendants"如下
    <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:descendantFocusability="blocksDescendants"
        android:orientation="vertical" >、。
    2. 继承BaseAdapter实现一个getView方法, 参数下面代码:
    public class TicketListViewItemAdpater extends BaseAdapter
    { private LayoutInflater mInflater; public TicketListViewItemAdpater(Context context)
    { this.mInflater = LayoutInflater.from(context);
    } @Override
    public int getCount()
    {
    // TODO Auto-generated method stub
    return incidentBeanList.size();
    } @Override
    public Object getItem(int arg0)
    {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public long getItemId(int arg0)
    {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public View getView(int position, View convertView, ViewGroup arg2)
    {
    // TODO Auto-generated method stub
    ViewHolder holder = null;
    if (convertView == null)
    {
    holder = new ViewHolder();
    convertView = mInflater.inflate(R.layout.ticket_listview_item,
    null);
    holder.TextView_name = (TextView) convertView
    .findViewById(R.id.TextView_name);
    holder.TextView_location = (TextView) convertView
    .findViewById(R.id.TextView_location);
    holder.TextView_description = (TextView) convertView
    .findViewById(R.id.TextView_description);
    holder.Button_Close = (Button) convertView
    .findViewById(R.id.Button_Close);
    convertView.setTag(holder);
    } else
    {
    holder = (ViewHolder) convertView.getTag();
    } holder.Button_Close.setTag(new Integer(position));
    holder.TextView_name.setText(incidentBeanList.get(position).title);
    holder.TextView_description
    .setText(incidentBeanList.get(position).description);
    holder.TextView_location
    .setText(incidentBeanList.get(position).location); holder.Button_Close.setOnClickListener(new View.OnClickListener()
    {
    @Override
    public void onClick(View v)
    {
    Integer tmp = (Integer) v.getTag();
    IncidentBean ib = incidentBeanList.get(tmp.intValue());
    Intent intent = new Intent();
    intent.putExtra("location", ib.location);
    intent.setClass(TicketActivity.this, MapActivity.class);
    TicketActivity.this.startActivity(intent);
    Log.i("zoukeTest", "button" + tmp.intValue());
    }
    });
    return convertView;
    }
    }