Estoy tratando de meterse con el nuevo RecyclerView y cada vez que intento ejecutar mi aplicación inmediatamente se bloquea. Me da NullPointerException para intentar acceder a los métodos de android.support.v7.widget.RecyclerView. He mirado en otros posts y vi que la mayoría de la gente no tiene compile 'com.android.support:recyclerview-v7:+' pero he intentado y no ha ayudado en absoluto. No muy segura de qué hacer en este punto, cualquier ayuda se agradece. Aquí el registro de errores: (me gustaría poner una foto pero no tengo 10 rep aún)

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView$LayoutManager.onMeasure(android.support.v7.widget.RecyclerView$Recycler, android.support.v7.widget.RecyclerView$State, int, int)' on a null object reference
at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764)
at android.view.View.measure(View.java:17430)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:727)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:463)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:851)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17430)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5463)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:430)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2560)
at android.view.View.measure(View.java:17430)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2001)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1166)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1372)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5786)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
  • publica tu código…
  • para cualquier persona que tenga este error causado por Viewpager fichas de ver este solución
  • Tenemos que resolver esto ?.Por favor ayuda estoy teniendo el mismo problema
  • Recuerde set/crear/registro en onCreateView lo de quitar/destruir/unregister en onDestroyView… Tengo que seguir los ciclos de vida!
InformationsquelleAutor Joe | 2014-12-11

18 Comentarios

  1. 211

    Este problema se produce normalmente cuando no LayoutManager fue proporcionada por el RecyclerView. Puedes hacerlo así:

    final LinearLayoutManager layoutManager = new LinearLayoutManager(context);
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);
    • Gracias, que se corrigió. Yo no tenía la layoutManager a la final.
    • No creo que debe de ser la final así que no creo que ese era el problema. En mi caso me fue la implementación de un fragmento con recyclerView y he tratado simplemente de conservar una referencia a él desde onCreateView y establecer un layoutManager más tarde, cuando se cargan los datos. Tuve este problema y se me pasó cuando me he puesto el layoutManager anteriormente en el gamein método onCreateView.
    • bueno, supongo que cada una de las variables que no necesita ser cambiado más tarde ha de ser declarada como final, por eso he declarado final aquí.
    • Desde LinearLayoutManager es vertical por defecto, puedes usar: recyclerView.setLayoutManager(nueva LinearLayoutManager(contexto));
    • Gracias por eso. A veces me pregunto por qué Google se muestra extraño registros…
    • Gracias a Dios que podemos Google los mismos mensajes de error que se hizo por parte de Google para que tengan sentido fuera de ellos.
    • Mi problema es todavía presente. Me estoy poniendo referencia de objeto null incluso con esta solución.
    • es difícil saber por qué usted está consiguiendo null referencia de objeto sin mirar a 1. el código que establece el RecyclerView y 2. el stacktrace usted está recibiendo tras el choque. 🙂
    • Gracias, nose de nadie más, pero me pareció que tomar lo que estoy tratando de hacer. Lo puso dentro de su propia «app» para centrarse en esa característica/función/etc. ayuda para mí para averiguar el problema. Estoy sinceramente todavía no está seguro de lo que pasó, pero he sido capaz de completar lo que estoy tratando de hacer. Gracias por tu respuesta y disposición a ayudar.

  2. 26

    En mi caso no estaba conectado a la ‘final’, pero para el problema mencionado en @NemanjaKovačević comentario a @aga respuesta.
    Me estaba dando un layoutManager en la carga de datos y que fue la causa del mismo accidente.
    Después de mover el layoutManager el programa de instalación para onCreateView de mi fragmentar el problema fue solucionado.

    Algo como esto:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState)
    {
    ...
    mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recycler);
    mLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
    mRecyclerView.setLayoutManager(mLayoutManager);
    • Una vez más: yo no digo que este problema es de alguna manera relacionados con la variable de no ser definitiva. El problema es que LayoutManager no fue suministrado, que es. Usted puede hacer que la variable que apunta a LayoutManager final o no final – no cambia nada.
    • estoy usando recyclerview en Actividad, no por fragmento. lo que el caso para mí?
    • sólo debe colocar layoutManager de instalación en el onCreate de la actividad, creo.
  3. 10

    Para mí, yo estaba teniendo el mismo problema, el problema era que no había disfrutado de la RecyclerView en xml con vista ido, pero yo no soy de unión a cualquier adaptador de la Actividad, de ahí el problema. Fue resuelto tan pronto como he quitado esas no utilizados recycler vistas en xml

    yo.e – me quita este punto de vista, ya que no era llamado en código o cualquier adaptador se ha establecido

    <android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rv_profileview_allactivities"
    android:visibility="gone" />
    • Mismo aquí todo perfecto, pero no estaba funcionando. Así que me quita no utilizados recyclerviews y funcionó sin ningún problema. Gracias man @Maurice ^^
    • después de perder un día probé tu solución y funcionó 😀 [ 🙁 mi tiempo consiguió desperdiciado]
  4. 8

    He experimentado este accidente a pesar de que yo tenía la RecyclerView.LayoutManager configurado correctamente. Tuve que mover el RecyclerView código de inicialización en el onViewCreated(...) de devolución de llamada para solucionar este problema.

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_listing, container, false);
    rootView.setTag(TAG);
    return inflater.inflate(R.layout.fragment_listing, container, false);
    }
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    mLayoutManager = new LinearLayoutManager(getActivity());
    mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
    mRecyclerView.setLayoutManager(mLayoutManager);
    mAdapter = new ListingAdapter(mListing);
    mRecyclerView.setAdapter(mAdapter);
    }
    • Aún así , mi problema no es resuelto :/ he intentado casi todas las soluciones y sigue recibiendo el mismo error cuando se utiliza RecyclerView dentro de un fragmento que se muestra en la PagerView 🙁
    • Impresionante! Mover el RecyclerView código de inicialización en el onViewCreated(...) trabajado
    • Hice esta solución, y aún así fue nulo para mí. Todavía tratando de averiguar donde a pesar de.
  5. 5

    Necesita utilizar setLayoutManager en el RecyclerView#onCreate() método. Antes de agregar recyclerView a una vista, debe tener la LayoutManager conjunto.

     private RecyclerView menuAsList;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    menuAsList = (RecyclerView) findViewById(R.id.recyclerView_mainMenu);
    menuAsList.setLayoutManager(new LinearLayoutManager(Home.this));
    }
  6. 3

    Tengo este problema debido a la mala referencia de RecyclerView id.

    recyclerView = (RecyclerView) findViewById(R.id.rv_followers_list);

    a

    recyclerView = (RecyclerView) findViewById(R.id.rv_search_list);
  7. 2
    recyclerView =
    (RecyclerView) findViewById(R.id.recycler_view2);

    Comprobar con usted reciclador de vista de la IDENTIFICACIÓN, señalando real reciclador de vista resuelto mi problema

  8. 1

    Mi problema era que en mi XML lyout tengo una android:animateLayoutChanges establece en true y he llamado a notifyDataSetChanged() en el RecyclerView del adaptador en el código Java.

    Así que, sólo me he quitado android:animateLayoutChanges de mi diseño, y que resloved mi problema.

  9. 1

    He tenido este problema cuando se utiliza Butterknife de la biblioteca.
    Tuve:

    View rootView = inflater.inflate
    (R.layout.fragment_recipe_detail_view, container, false);
    ButterKnife.bind(rootView);

    Pero la versión correcta es:

    View rootView = inflater.inflate
    (R.layout.fragment_recipe_detail_view, container, false);
    ButterKnife.bind(this, rootView);
  10. 1

    Yo estaba usando un la Inyección de DependenciaButterKnife y este problema se originó debido a que no había acabado la vista.

    Así que dentro de onCreate() me acaba de insertar esta línea:

    ButterKnife.bind(this);

    Mi RecyclerView declaración con la Inyección de Dependencia:

    @BindView(R.id.recyclerview)
    RecyclerView recyclerView;
  11. 0

    Desde LinearLayoutManager es vertical por defecto, una manera más fácil de hacer esto es:

    recyclerView.setLayoutManager(new LinearLayoutManager(context));

    Si quieres cambiar la orientación que usted podría usar este constructor:

    public LinearLayoutManager(Context context, int orientation, boolean reverseLayout);
    • tener un extraño issulinearlayout administrador de ahora. im crear instancias de ella, pero en ge este error. la vaca sagrada.
  12. 0

    Creo que el problema en su Adapter.
    Asegúrese de que usted ha regresado ViewHolder en onCreateViewHolder().
    Como a continuación:

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v;
    v = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_leaderboard, parent, false);
    ViewHolder view_holder = new ViewHolder(v);
    return view_holder;
    }
  13. 0

    Para mí, el problema fue con mi activity_main.xml(21) en el que el recycleView no tiene un id.

    activity_main.xml(21)

     <android.support.v7.widget.RecyclerView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button3"
    tools:listitem="@layout/transaction_list_row" />

    activity_main.xml

    <android.support.v7.widget.RecyclerView
    android:id="@+id/transac_recycler_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginStart="8dp"
    android:layout_marginLeft="8dp"
    android:layout_marginTop="8dp"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/button3"
    />

    Funcionó cuando he añadido un android:id=»@+id/transac_recycler_view» a la activity_main.xml(21) recycleView

  14. 0

    En Gradle implementar esta biblioteca :

    implementation 'com.android.support:appcompat-v7:SDK_VER'
    implementation 'com.android.support:design:SDK_VER'
    implementation 'com.android.support:support-v4:SDK_VER'
    implementation 'com.android.support:support-v13:SDK_VER'
    implementation 'com.android.support:recyclerview-v7:SDK_VER'

    En XML mencionar como esta :

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

    En Fragmento utilizamos recyclerView como este :

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    //Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.YOUR_LAYOUT_NAME, container, false);
    RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);
    APICallMethod();
    YOURADAPTER = new YOURADAPTER(getActivity(), YOUR_LIST); //you can use that adapter after for loop in response(APICALLMETHOD)
    recyclerView.setAdapter(YOURADAPTER);
    return rootView;
    }

    En Actividad utilizamos RecyclerView como este :

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.YOUR_LAYOUT_NAME);
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
    recyclerView.setLayoutManager(layoutManager);
    APICallMethod();
    YOURADAPTER = new YOURADAPTER(ACTIVITY_NAME.this, YOUR_LIST); //you can use that adapter after for loop in response(APICALLMETHOD)
    recyclerView.setAdapter(YOURADAPTER);
    }

    si usted necesita horizontal RecyclerView hacer esto :

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
    recyclerView.setLayoutManager(layoutManager);
    APICallMethod();
    YOURADAPTER = new YOURADAPTER(ACTIVITY_NAME.this, YOUR_LIST); //you can use that adapter after for loop in response(APICALLMETHOD)
    recyclerView.setAdapter(YOURADAPTER);

    si quieres usar GridLayoutManager utilizando RecyclerView uso como esta :

            RecyclerView recyclerView = findViewById(R.id.rvNumbers);
    recyclerView.setLayoutManager(new GridLayoutManager(this, 3)); //3 is number of columns.
    adapter = new MyRecyclerViewAdapter(this, data);
    recyclerView.setAdapter(adapter);
  15. 0

    En mi caso, he añadido sólo butterknife biblioteca y te olvides de añadir annotationProcessor. Agregando a continuación de la línea a construir.gradle (módulo App), resuelto mi problema.

        annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
  16. 0

    Recyclerview recylerview = findbyid(R. id.recyclerview)
    Puede ser que te hayas olvidado

    • Hola, bienvenido ENTONCES! Por favor explique algo más de por qué esto es relevante para esta pregunta. Como se escriben actualmente es difícil decir lo que se refiere a.
  17. -1

    Si yo donde voy a hacer esto.
    onView(withId(android.R.id.lista)).realizar(RecyclerViewActions.scrollToPosition(3));
    android.R.id.cambiar la lista a la lista de id y la posición de su posición dentro de la matriz.

  18. -1

    utilizando fragmento

    la escritura de código en onCreateView()

    RecyclerView recyVideo = vista.findViewById(R. id.recyVideoFag);

    con la actividad

    la escritura de código en onCreate()
    RecyclerView recyVideo = findViewById(R. id.recyVideoFag);

Dejar respuesta

Please enter your comment!
Please enter your name here