Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error inflating class RecyclerView

So my code simply makes a list of CardViews using RecyclerView. Upon running my code i kept getting a weird error claiming there was an error in my xml. After tinkering for a while i found out that in my layout file if i change <RecyclerView> to <android.support.v7.widget.RecyclerView> everything would work just fine. Why is this happening?
My activity.

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);     }  } 


My Adapter

    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);         }     }  } 


My layout file, note, changing <RecyclerView> to <android.support.v7.widget.RecyclerView> fixes the 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> 

When i run with <RecyclerView> i get this 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 

`

like image 770
Liquid Ink Avatar asked Feb 13 '15 00:02

Liquid Ink


Video Answer


2 Answers

You should add the RecyclerView in the XML in this way:

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

Hope it helps!

like image 108
Juan Saravia Avatar answered Sep 25 '22 07:09

Juan Saravia


RecyclerView is not included in base Android framework, only widgets in base Android framework (like ListView, GridView etc) can be specified in layout without full namespace. RecyclerView is part of recyclerview-v7 support library.

like image 27
hidro Avatar answered Sep 24 '22 07:09

hidro