0

Мне нужна ваша помощь!OnItemClickListener Не работает во фрагменте (Multicolumn ListView)

У меня есть основное действие, которое содержит 2 фрагмента (один для заголовка и один для многоколоночного списка), один из фрагментов - ListFragments содержит многоколоночный ListView, который помещается в прокручиваемое представление. Этот ListFragment переопределяет метод onItemClickListener. Я могу прокручивать представление и все, но когда я нажимаю на listview, слушатель не вызывается!

Я пробовал много разных решений, таких как попытка блокировки фокусировки для просмотров, но до сих пор ничего не работало. Может быть, вы, ребята, можете мне помочь.

Родитель деятельность, содержащая два фрагмента:

<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

Вы говорите, что у вас есть ListView в ScrollView? Это так? Если это так, это редко бывает счастливым партнерством и может быть причиной. – NigelK

ответ

2

Удалите scollview в макете или определить его как не фокусируемый затем повторите попытку

+0

Ничего себе, спасибо большое! Это было действительно так просто. Я не понимаю, как это было необходимо, поскольку я определяю android: focusable = "false" android: focusableInTouchMode = "false" android: descendantFocusability = "blocksDescendants" в scrollView как видно в OP. Я не могу поверить, что все было так просто, и получается, что я могу жить без прокрутки в любом случае, спасибо! –

Смежные вопросы