2012-11-15 99 views
1

我有一個自定義listView,我正在使用此項目佈局。問題是ListView的OnItemClickListener偶處理程序只捕獲imageView上的點擊,而不捕獲其他2個textView上的點擊。有任何解決這個問題的方法嗎?Android自定義ListView項目不可點擊

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="@dimen/Fourdp" 
    android:layout_marginLeft="@dimen/Fourdp" 
    android:layout_marginRight="@dimen/Fourdp" 
    android:layout_marginTop="@dimen/Fourdp" 
    android:gravity="left|center" 
    android:paddingBottom="5px" 
    android:paddingLeft="5px" 
    android:paddingTop="5px" 
    android:descendantFocusability="blocksDescendants"> 

    <ImageView 
     android:id="@+id/color" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="@dimen/Fourdp" 
     android:layout_marginLeft="@dimen/Fourdp" 
     android:layout_marginRight="@dimen/Fourdp" 
     android:layout_marginTop="@dimen/Fourdp"/> 

    <LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:layout_weight="1" 
     android:longClickable="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/task" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#336699" /> 
    </LinearLayout> 

</LinearLayout> 

我試過設置機器人:可調焦=「假」和android:點擊=「假」的ImageView的,但它仍然無法正常工作。

回答

1

這是因爲含TextViews的LinearLayout中有android:longClickable="true"屬性。

如果您將其刪除,它將起作用。

爲什麼你需要它?您可以使用ListView的setOnLongClickListener()方法來檢測對項目的長時間點擊。

0

您需要實現在適配器中的物品(你膨脹的行視圖)一onclicklistner

public View getView(int position, View convertView, ViewGroup parent) 
     { 

      View v = convertView; 
      if (v == null) 
      { 
       LayoutInflater vi = (LayoutInflater)InAppPurchaseActivity.this.getParent().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v = vi.inflate(R.layout.list_item_product, null); 
      } 

      // add your view with onclicklistner here 


      return v; 
     } 
0

//在這兩個文本視圖中添加此行android:duplicateParentState="true"這將起作用。

<LinearLayout 
     android:layout_width="0dip" 
     android:layout_height="fill_parent" 
     android:layout_gravity="left" 
     android:layout_weight="1" 
     android:longClickable="true" 
     android:orientation="vertical" > 

     <TextView 
      android:id="@+id/task" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="left" 
      android:duplicateParentState="true" 
      android:textSize="20sp" /> 

     <TextView 
      android:id="@+id/date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:duplicateParentState="true" 
      android:textColor="#336699" /> 
    </LinearLayout>