26

तो मेरा कोड बस RecyclerView का उपयोग कर कार्डव्यू की एक सूची बनाता है। मेरे कोड को चलाने पर मुझे एक अजीब त्रुटि मिल रही थी कि मेरा एक्सएमएल में कोई त्रुटि हुई है। थोड़ी देर के लिए टिंकरिंग के बाद मुझे पता चला कि मेरी लेआउट फ़ाइल में यदि मैं <RecyclerView> से <android.support.v7.widget.RecyclerView> बदलता हूं तो सब कुछ ठीक काम करेगा। ये क्यों हो रहा है?
मेरी गतिविधि।कक्षा पुनर्चक्रण को देखने में त्रुटि

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

} 


मेरे एडाप्टर

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

} 


मेरे लेआउट फ़ाइल, टिप्पणी, त्रुटि <RecyclerView><android.support.v7.widget.RecyclerView> को ठीक करता है बदल रहा है।

<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> 

जब मैं <RecyclerView> मैं इस त्रुटि मिलती है साथ चलाने के लिए,।

`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 

`

उत्तर

33

RecyclerView आधार एंड्रॉयड ढांचे में शामिल नहीं है, केवल आधार एंड्रॉयड ढांचे में विगेट्स (जैसे ListView, GridView आदि) पूर्ण नाम स्थान के बिना लेआउट में निर्दिष्ट किया जा सकता है। RecyclerViewrecyclerview-v7 समर्थन पुस्तकालय का हिस्सा है।

4

शामिल करने के लिए इससे पहले कि आप अपने XML को RecyclerView जोड़ने सुनिश्चित करें

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

यदि आप अपने एक्सएमएल में RecyclerView बनाई गई इन निर्भरताओं को जोड़ने से पहले, (टिप्पणी) अपने recycler दृश्य यह काम आप निकालना चाहिए बनाने के लिए, इसके बिना परियोजना बनाएं और फिर इसे वापस जोड़ें। अन्यथा यह अभी भी बाइनरी एक्सएमएल लाइन # एन में इन्फ्लेट अपवाद दिखाता है।

+0

मैं ग्रहण का उपयोग कर रहा है और इस मुद्दे का सामना करना पड़ आप अपने ProGuard फ़ाइलों को recyclerView जोड़ना चाहिए मैंने अपना प्रश्न यहां पोस्ट किया है: http: //stackoverflow.com/questions/33375943/error-inflating-class-recycler-view? Noredirect = 1 # comment54546208_33375943 मैंने लाइब्रेरी समेत आपके सुझाव की कोशिश की और फिर रीसाइक्लिंग व्यू एक्सएमएल में विजेट लेकिन मुझे एक ही समस्या का सामना करना पड़ रहा है। क्या कर सकते हैं कहां कृपया – ghostrider

32

आप इस तरह से एक्सएमएल में RecyclerView जोड़ना चाहिए:

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

</android.support.v7.widget.RecyclerView> 

आशा है कि यह मदद करता है!

+0

मदद करें आपको अभी भी कार्यान्वयन'com.android.support: recyclerview-v7: 26.1.0 ' को अपनी ग्रेड फ़ाइल में @KuRoSan ER के रूप में जोड़ने की आवश्यकता होगी। कहते हैं –

8

आज मैं इस समस्या को पूरा करता हूं। और इसे हल किया।

पहला कदम: समर्थन-libs आप इस्तेमाल एक ही संस्करण हैं रखने

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' 

दूसरा कदम:

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

मेरे अन्य प्रो-गार्ड फ़ाइल में उपर्युक्त रेखा जोड़ने, काम करने वाले अन्य समाधानों में से कोई भी काम नहीं करता है।यह उल्लेख करने लायक हो सकता है कि यदि आपका ऐप डीबग बिल्ड में काम करता है और फिर रीसाइक्लर के साथ रिलीज में नहीं है तो मुद्रास्फीति अपवाद देखें, कि उपरोक्त निश्चित रूप से सही समाधान होगा क्योंकि रिलीज बिल्ड पर प्रोगार्ड का उपयोग किया जाता है और डीबग नहीं होता है। धन्यवाद –

संबंधित मुद्दे