2012-09-22 10 views
20

मैं Fragment को विस्तारित करता हूं जो कक्षा में setAdapter() विधि को कॉल कर रहा हूं। ध्यान दें कि मैंने android.support.v4.app.Fragment आयात किया है।setAdapter "कॉल को एपीआई स्तर 11 की आवश्यकता है (वर्तमान मिनट 8 है): android.widget.AbsListView # setAdapter"?

हालांकि मैं यह बताते हुए कि एपीआई स्तर स्तर होना आवश्यक है कोई त्रुटि मिलती है 11.

क्या मुझे लगता है कि मैं बदल रहा minSdkVersion="8"minSdkVersion="11"

package foo.bar.qux; 

import java.util.Calendar; 
import java.util.Date; 

import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 

import android.support.v4.app.Fragment; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.TextView; 

public class TabFragmentList extends Fragment { 

    String category, xml; 
    NodeList nodes; 
    int numResults; 
    private ListView lv; 
    Date date; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     if (container == null) return null; 
     return (LinearLayout) inflater.inflate(R.layout.eventlist, container, 
       false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Activity activity = getActivity(); 
     if (activity != null) { 
      final Calendar c = Calendar.getInstance(); 
      ListContent[] item = new ListContent[3]; 
      category = (String) activity.getIntent().getExtras() 
        .get("category"); 
      xml = (String) activity.getIntent().getExtras().get("xml"); 
      TextView tv = (TextView) getView().findViewById(R.id.category); 
      tv.setText(category); 
      nodes = doc.getElementsByTagName("event"); 
      for (int i = 0; i < 3; i++) { 
       c.add(Calendar.DATE, 1); 
       date = c.getTime(); 
       item[i] = new ListContent(); 
       item[i].setList(nodes, category, date); 
      } 
      EventListAdapter adapter = new EventListAdapter(activity, 
        R.layout.eventlist_row, item); 
      lv = (ListView) getView().findViewById(R.id.listView1); 
      lv.setAdapter(adapter); // ERROR SHOWN HERE 
     } 
    } 
} 

को नोट के बिना इसे ठीक कर सकते तो मुझे क्या करना होगा : मैंने लक्ष्य SdkVersion को 10 तक कम करने की कोशिश की। फिर भी मुझे त्रुटि मिलती है। कृपया सहायता कीजिए!

संपादित करें: मुझे समझ में नहीं आता है कि इसे AbsListVew क्यों कहा जाता है जब मैंने जो कुछ भी उपयोग किया है वह ListView है। साथ ही, ध्यान दें कि मैंने कस्टम एडाप्टर का उपयोग किया है।

EventListAdapterArrayAdaptere<ListContent> बढ़ाता है और कोई त्रुटि नहीं दिखाता है।

आपके संदर्भ के लिए यहाँ के लिए R.id.ListView1 के लिए XML लेआउट कोड स्निपेट है

<ListView 
     android:layout_margin="10dp" 
     android:dividerHeight="10.0sp" 
     android:id="@+id/listView1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
+0

टेढ़े सुनिश्चित करें कि आप का विस्तार कर रहे समर्थन बनाओ टुकड़ा ... बस आयात को हटा दें और इसे बदलें –

उत्तर

71

Right click on the project folder > Android tools > Clear Link Markers

"रन Android Lint" कुछ मार्कर बनाता है और मार्कर इस त्रुटि का कारण।

+6

और मुझे प्राथमिकता> एंड्रॉइड> लिंट त्रुटि जांच के तहत "फ़ाइलों को सहेजते समय त्रुटियों की जांच करें" अनचेक करना पड़ा। – Felix

0

कि आप दस्तावेज़ों में देख सकते हैं AbsListView पर setAdapter() विधि सिर्फ एपीआई स्तर से 11. तो वहाँ isn उपलब्ध है ' आप जितना कर सकते हैं, आप अंततः AbsListView को ListView या GridView पर डाल सकते हैं और फिर setAdapter() पर कॉल कर सकते हैं।

+0

मैंने अपने कोड में केवल 'ListView' का उपयोग किया है। बस मैंने अपने 'एडाप्टर' को अनुकूलित किया। तब त्रुटि कहां है? – Enigman

+0

कुछ कोड पोस्ट करें तो –

+0

@ ओविडु: मैंने कोड पोस्ट किया है। क्या आप कृपया मुझे जांच सकते हैं और बता सकते हैं? धन्यवाद :) – Enigman

7

समाधान सबटाइप को सही करने के लिए सिर्फ कास्टिंग प्रकार है क्योंकि बाद के एंड्रॉइड संस्करणों ने उसी नाम के साथ विधि कॉल पेश किया है।

@SuppressWarnings({ "unchecked", "rawtypes" }) 

EventListAdapter adapter = new EventListAdapter(activity, R.layout.eventlist_row, item); 
lv = (ListView) getView().findViewById(R.id.listView1); 
((AdapterView)lv).setAdapter(adapter); //ERROR SOLVED HERE 
+0

मुझे कोई दुर्घटना दिखाई नहीं दे रही है, समझाओ, आपकी टिप्पणी अन्यथा उपयोगी नहीं है ... आप प्री एपीआई 11 एडाप्टर व्यू को कास्टिंग कर रहे हैं, तो आप यहां क्या करते हैं, नए एपीआई के साथ कुछ भी नहीं है, आप केवल कंपाइलर को सही उपयोग करने के लिए कह रहे हैं विधि जो पूर्व एपीआई 11 में मौजूद है ... – Renetik

+1

क्षमा करें, मैंने आपके समाधान का परीक्षण किया और मेरे पास "अमूर्त विधि लागू नहीं हुई त्रुटि" थी। हालांकि मुझे अपनी समस्या के लिए एक समाधान मिला है। अंत में समाधान में काम हो सकता है, यह मेरा कार्यान्वयन था जिसे अच्छी तरह से निष्पादित नहीं किया गया था। मैं बाद में अपनी प्रतिक्रिया हटा दूंगा क्योंकि यह रिलीज़ नहीं हुआ था –

0

मैं "सार विधि त्रुटि लागू नहीं किया" इस तरह मेरी setAdapter विधि कास्टिंग द्वारा हल:

@SuppressWarnings("unchecked") 
public void setAdapterSDK8(Adapter adapter) { 
    ((AdapterView) this).setAdapter(adapter); 
    ((StaggeredGridView) this).setAdapter((ListAdapter) adapter); 
} 

यह Etsy से संबंधित है gridview

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