RecyclerView avec des Fragments

Je suis en train d'utiliser la nouvelle RecyclerView widget à l'intérieur d'un Fragment mais j'obtiens cette erreur:

Impossible de démarrer l'activité
ComponentInfo{com.exemple.myapplication/com.exemple.myapplication.MyActivity}:
java.lang.NullPointerException: Essayez d'appeler la méthode de l'interface
'boolean java.util.Liste.ajouter(java.lang.Objet) " sur un objet null
référence

Ce que je fais mal?

C'est mon Fragment:

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

public class RecyclerviewFragment extends Fragment {

    private RecyclerView mRecyclerView;
    private RecyclerviewAdapter mRecyclerviewAdapter;
    private LinearLayoutManager mLinearLayoutManager;

    private List<ViewModel> viewModel;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_recyclerview, container, false);
        mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view);

        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        mRecyclerviewAdapter = new RecyclerviewAdapter(viewModel);
        mLinearLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setAdapter(mRecyclerviewAdapter);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    }
}

Et mon Activité:

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import java.util.List;

public class MyActivity extends Activity {

    private List<ViewModel> viewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        RecyclerviewFragment recyclerviewFragment = new RecyclerviewFragment();
        getFragmentManager().beginTransaction().add(android.R.id.content, recyclerviewFragment).commit();

        viewModel.add(new ViewModel("View"));



    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        //Handle action bar item clicks here. The action bar will
        //automatically handle clicks on the Home/Up button, so long
        //as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Merci!

Vous n'avez pas créé l'objet de viewModel et c'est pourquoi le message d'erreur.
Veuillez - vous venez d'avoir un bête problème de programmation Java où vous avez oublié d'initialiser une variable. Cela n'aide pas tout le monde (sauf vous) Merci de retirer cette question que les gens finissent par ici qui ont vraiment des problèmes avec RecyclerViews et Fragments! Je vous remercie pour votre coopération!

OriginalL'auteur ivoencarnacao | 2014-07-26