2016-09-29 4 views
0

У меня есть listFragment внутри ViewPager. Проблема в том, что событие OnItemSelected не запускается. Я слышу звук обратной связи с кликом, но событие не выполняется. Я уже пробовал установить android:descendantFocusability="blocksDescendants", но это не поможет.ListFragment внутри ViewPager onItemSelected not firing

Раньше у меня была логика RecyclerView (выполнена с использованием шаблона Android Studio), и она работала, но я хотел измениться, потому что это выглядело сбивающим с толку.

Я это внутри activity_main.xml

<it.grsrl.rdd.redeye.Tools.CustomViewPager 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

Это fragment_list.xml

<ListView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/listview_asset_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

И это кратко item_list.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp"> 

    <RelativeLayout> 
     <ImageView /> 
     <TextView/> 
     <TextView /> 
     <TextView /> 
    </RelativeLayout> 

</FrameLayout> 

Я сделал тест: в моем пользовательском адаптере я зарегистрирован OnClickListener внутри метод getView и представление получают щелчок. Итак, кто ест мой клик?

Любая помощь?

+0

Несколько вещей, вы пытались переопределить (еи MotionEvent) ViewGroup.onInterceptTouchEvent? а также попытайтесь сделать item_list.xml дальнейшие просмотры focusable = "false" и clickable = "false" и focusableInTouchMode = "false". Где вы использовали этот андроид: descendantFocusability = "blocksDescendants"?, Он должен идти для framelayout в item_list.xml –

+0

Я все установил, как вы сказали, но ничего не меняет. Я не знаю, как переопределить onInterceptTouchEvent – theBugger

ответ

0

Мне не хватало, что ListFragment уже предоставляет метод преодоления onListItemClick. Я устанавливал слушателя onViewCreated() таким образом:

getListView().setOnItemSelectedListener() 

Но в конце концов это будет терпеть неудачу тихо.

Итак, мне просто нужно переопределить onListItemClick в моих ListFragment

@Override 
    public void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
      Item itm = mListener.onAssetClick(l.getItemAtPosition) 
     } 
    }