ViewPager中的ListFragment onItemSelected未触发

时间:2016-09-29 16:16:12

标签: android listview

listFragment内有ViewPager。问题是列表OnItemSelected事件未被触发。我可以听到被点击的项目的反馈声音,但事件没有被执行。我已经尝试设置android:descendantFocusability="blocksDescendants",但它没有帮助。

在我以前使用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>

我做了一个测试: 在我的自定义适配器中,我在getView方法中注册了一个OnClickListener,并且视图正在接收点击。那么,谁在吃我的点击事件?

任何帮助?

1 个答案:

答案 0 :(得分: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)
        }
    }