recyclerview programacion hermosa dependency create cardview card and android android-5.0-lollipop material-design android-recyclerview recycler-adapter

android - programacion - recyclerview dependency



Error al inflar la clase RecyclerView (5)

Así que mi código simplemente hace una lista de CardViews usando RecyclerView. Al ejecutar mi código, seguí recibiendo un error extraño al afirmar que había un error en mi xml. Después de jugar un poco durante un tiempo descubrí que en mi archivo de diseño, si cambio <RecyclerView> por <android.support.v7.widget.RecyclerView> todo funcionaría bien. ¿Por qué está pasando esto?
Mi actividad.

import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Menu; import android.view.MenuItem; import java.util.ArrayList; public class CardListActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_card_list); RecyclerView recyclerView = (RecyclerView)findViewById(R.id.cardList); recyclerView.setHasFixedSize(true); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(linearLayoutManager); ArrayList<String> list = new ArrayList<>(); for(int i = 0; i < 20; i++) {list.add("Item " + i);} CardListAdapter cardListAdapter = new CardListAdapter(list); recyclerView.setAdapter(cardListAdapter); } }


Mi adaptador

import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List; public class CardListAdapter extends RecyclerView.Adapter<CardListAdapter.CardListViewHolder> { private List<String> list; public CardListAdapter(List<String> list) { this.list = list; } @Override public CardListViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.card_layout,viewGroup,false); return new CardListViewHolder(v); } @Override public void onBindViewHolder(CardListViewHolder cardListViewHolder, int i) { String s = list.get(i); cardListViewHolder.title.setText(s); } @Override public int getItemCount() { return list.size(); } public static class CardListViewHolder extends RecyclerView.ViewHolder { TextView title; public CardListViewHolder(View itemView) { super(itemView); title = (TextView)itemView.findViewById(R.id.title); } } }


Mi archivo de diseño, nota, cambiando <RecyclerView> a <android.support.v7.widget.RecyclerView> corrige el error.

<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" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".CardListActivity"> <RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/cardList"> </RecyclerView>

Cuando corro con <RecyclerView> me sale este error,.

`Process: com.liquidink.lollipopmaterialui, PID: 7317 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.liquidink.lollipopmaterialui/com.liquidink.lollipopmaterialui.CardListActivity}: android.view.InflateException: Binary XML file line #8: Error inflating class RecyclerView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) at android.app.ActivityThread.access$800(ActivityThread.java:144) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) at android.os.Handler.dispatchMessage(Handler.java:102) 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:899) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class RecyclerView at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:757) at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:414) at android.view.LayoutInflater.inflate(LayoutInflater.java:365) at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228) at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102) at com.liquidink.lollipopmaterialui.CardListActivity.onCreate(CardListActivity.java:18) at android.app.Activity.performCreate(Activity.java:5933) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)             at android.app.ActivityThread.access$800(ActivityThread.java:144)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)             at android.os.Handler.dispatchMessage(Handler.java:102)             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:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Caused by: java.lang.ClassNotFoundException: Didn''t find class "android.view.RecyclerView" on path: DexPathList[[zip file "/data/app/com.liquidink.lollipopmaterialui-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at android.view.LayoutInflater.createView(LayoutInflater.java:571) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:665) at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:65) at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)             at android.view.LayoutInflater.inflate(LayoutInflater.java:504)             at android.view.LayoutInflater.inflate(LayoutInflater.java:414)             at android.view.LayoutInflater.inflate(LayoutInflater.java:365)             at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:228)             at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)             at com.liquidink.lollipopmaterialui.CardListActivity.onCreate(CardListActivity.java:18)             at android.app.Activity.performCreate(Activity.java:5933)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)             at android.app.ActivityThread.access$800(ActivityThread.java:144)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)             at android.os.Handler.dispatchMessage(Handler.java:102)             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:899)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) Suppressed: java.lang.ClassNotFoundException: android.view.RecyclerView at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 26 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

`


  1. Compruebe la referencia en build.gradle
  2. En su archivo de diseño xml, escriba el nombre de su componente RecyclerView en su totalidad con su paquete como ese android.support.v7.widget.RecyclerView no como RecyclerView

ahora listo para el almuerzo. Buenos senderos


Asegúrese de incluir antes de agregar RecyclerView a su XML

compile ''com.android.support:recyclerview-v7:22.2.0'' compile ''com.android.support:appcompat-v7:22.2.0''

Si creó RecyclerView en su XML antes de agregar estas dependencias, para que funcione, debe eliminar (comentar) su vista de reciclador, crear un proyecto sin él y luego volver a agregarlo. De lo contrario, todavía muestra la excepción de inflación en la línea XML binaria #n.


Debería agregar el RecyclerView en el XML de esta manera:

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

¡Espero eso ayude!


Me encuentro con este problema hoy. Y lo resolvió.

primer paso: mantener las librerías de soporte que usaste son la misma versión

compile ''com.android.support:appcompat-v7:23.1.1'' compile ''com.android.support:support-v4:23.1.1'' compile ''com.android.support:recyclerview-v7:23.1.1''

Segundo paso: debes agregar recyclerView a tus archivos de proguard

-keep class android.support.v7.widget.** {*;} // I`ve just keep all widgets


RecyclerView no se incluye en el marco base de Android, solo los widgets en el marco base de Android (como ListView , GridView , etc.) se pueden especificar en el diseño sin espacio de nombres completo. RecyclerView es parte de la biblioteca de soporte de recyclerview-v7 .