0

我需要你的幫助!OnItemClickListener不工作在片段(多列ListView)

我有一個主要的活動,包含2個片段(一個用於標題,一個用於多列列表),其中一個片段是一個ListFragments,包含一個多列ListView,它被裝入一個可滾動的視圖中。此ListFragment覆蓋onItemClickListener方法。我可以滾動視圖和一切,但是當我點擊列表視圖時,不會調用監聽器!

我已經嘗試了許多不同的解決方案,例如試圖阻止視圖的可聚焦性,但目前爲止沒有任何工作。也許你們可以幫助我。

包含兩個片段父活動:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="1" 
    android:descendantFocusability="blocksDescendants" 
    tools:context=".MainWindow" 
    > 

    <fragment 
     android:id="@+id/headerfragment" 
     android:name="lindcom.mobile.estock.fragments.ListHeaderFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:descendantFocusability="blocksDescendants" 
     /> 

    <fragment 
     android:id="@+id/unitlistfragment" 
     android:name="lindcom.mobile.estock.fragments.UnitsListFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:descendantFocusability="blocksDescendants" 
     /> 

</LinearLayout> 

這是我用我的多列列表佈局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:descendantFocusability="blocksDescendants" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="1" > 

     <TextView 
      android:id="@+id/unitsCol1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.40" 
      android:ellipsize="marquee" 
      android:maxLines="1" 
      android:scrollHorizontally="true" 
      android:singleLine="true" 
      /> 

     <TextView 
      android:id="@+id/unitsCol2" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.40" 
      android:ellipsize="marquee" 
      android:maxLines="1" 
      android:scrollHorizontally="true" 
      android:singleLine="true" 
      /> 


     <TextView 
      android:id="@+id/unitsCol3" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.2" 
      android:ellipsize="marquee" 
      android:maxLines="1" 
      android:scrollHorizontally="true" 
      android:singleLine="true" 
      /> 
    </LinearLayout> 

</ScrollView> 

上述佈局填充在一個異步任務,我有後獲取數據:

ListAdapter adapter = new SimpleAdapter(
        fragment.getActivity().getBaseContext(), this.unitList, 
        R.layout.unit_list_item, new String[] { TAG_OWNER, TAG_NAME, 
          TAG_CONTENT }, new int[] { R.id.unitsCol1, R.id.unitsCol2, 
          R.id.unitsCol3 }); 


      fragment.setListAdapter(adapter); // Set the adapter to the listFragment 

然後,對於點擊聆聽者,我簡單地覆蓋它在t他片段:

public class UnitsListFragment extends ListFragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Fetch stuff here 

    } 

    @Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 

     String type = l.getItemAtPosition(position).getClass().toString(); 

     Log.d("Item type was", type); 
      // THIS IS NEVER INVOKED :(


    }; 
} 

我已經嘗試了很多不同的東西,但也許你們可以看到一個簡單的修復這個,我可能忽略了一些東西。

任何幫助將不勝感激!謝謝!

+1

你說你在ScrollView中有一個ListView?是這樣嗎?如果是這樣,那很少是一個快樂的夥伴關係,可能是原因。 – NigelK

回答

2

在佈局中刪除您的scollview或將其定義爲不可聚焦,然後再試一次

+0

哇,非常感謝!這真的很簡單。我不明白那是怎麼需要的,因爲我定義了在OP中看到的scrollView中的android:descendantFocusability =「blocksDescendants」 android:focusable =「false」 android:focusableInTouchMode =「false」 我簡直不敢相信那是簡單的,事實證明我可以不用滾動視圖而生活,謝謝! –