web-dev-qa-db-fra.com

Implémenter un RecyclerView dans un fragment

J'essaie de créer un ListView dans un fragment dans un ViewPager dans un AppCompatActivity. Dans AppCompatActivity, tous les éléments de vue sont enveloppés dans un CoordinatorLayout. Parce que j'ai utilisé le CoordinatorLayout. Je suis obligé d'utiliser RecylerView. J'essaie de suivre la formation de developer.Android.com , mais mon application s'est arrêtée après mon journal. C'est mon code dans myFragment où les applications se sont arrêtées.

import Android.app.Activity;
import Android.os.Bundle;
import Android.support.v4.app.Fragment;
import Android.support.v7.widget.LinearLayoutManager;
import Android.support.v7.widget.RecyclerView;
import Android.util.Log;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;

//...

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_city_list, container, false)

    mRecyclerView = (RecyclerView) view.findViewById(Android.R.id.list);
    mLayoutManager = new LinearLayoutManager(this.getActivity());
    Log.d("debugMode", "The application stopped after this");
    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new RecyclerAdapter(getNames());
    mRecyclerView.setAdapter(mAdapter);
    return view;
}

//...
5
user3432681

Utilisez ceci

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_city_list, container, false)

    // Replace 'Android.R.id.list' with the 'id' of your RecyclerView
    mRecyclerView = (RecyclerView) view.findViewById(Android.R.id.list);
    mLayoutManager = new LinearLayoutManager(this.getActivity());
    Log.d("debugMode", "The application stopped after this");
    mRecyclerView.setLayoutManager(mLayoutManager);

    mAdapter = new RecyclerAdapter(getNames());
    mRecyclerView.setAdapter(mAdapter);
    return view;
}

Vous devez appeler les méthodes setLayoutManager & setAdapter ( respectivement ) sur Recyclerview

Plus,

mRecyclerView = (RecyclerView) view.findViewById(Android.R.id.list);

vous ne devriez pas utiliser Android.R.id.list, car vous n'utilisez pas une ListFragment. Remplacez-le par la id de vous Recyclerview ( comme dans votre mise en page XML ).

10
Mohammed Aouf Zouag

avez-vous défini Android.R.id.list comme identifiant Recyclage? sinon, vous devez définir un identifiant pour recyclerview dans le fichier XML, comme ceci: 

Android:id="@+id/recyclerview"

et changer cette ligne 

mRecyclerView = (RecyclerView) view.findViewById(Android.R.id.list);

à 

mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
0
Daniel Martin Shum