Мне нужно накачать RecyclerView внутри фрагмента AndroidStudio - PullRequest
0 голосов
/ 10 октября 2018

Я хотел бы использовать Tab / Fragment для отображения RecyclerView, но я не знаю, как это сделать, потому что метод класса Fragment возвращает представление, а не представление Reclycler:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        myFragmentView = inflater.inflate(R.layout.fragment_needs, container, false);

        return myFragmentView;
    }

Код фрагмента.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".NeedsFragment">

    <FrameLayout
        android:id="@+id/main_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginStart="0dp">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/all_user_need_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </android.support.v7.widget.RecyclerView>

    </FrameLayout>

</RelativeLayout>

Спасибо.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете вернуть любой тип компонента представления и пользовательского представления, которые наследуются от класса android.view в методе onCreateView ().

0 голосов
/ 10 октября 2018

Во-первых, ваш onCreateView() метод не имеет смысла:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    myFragmentView = inflater.inflate(R.layout.fragment_needs, container, false);

    return needsFragmentRecyclerView; //you should be returning myFragmentView here, not whatever needsFragmentRecyclerView is
}

Во-вторых, как только вы раздуте свой макет, просто используйте findViewById():

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    myFragmentView = inflater.inflate(R.layout.fragment_needs, container, false);

    RecyclerView recyclerView = myFragmentView.findViewById(R.id.all_user_need_list); //assign to a global variable if needed

    return myFragmentView; //replaced with the proper variable
}

В качестве альтернативы выВы можете получить RecyclerView из любой точки вашего фрагмента, если он называется после onCreateView() со следующим:

RecyclerView recyclerView = getView().findViewById(R.id.all_user_need_list);
...