2012-04-18 17 views
6

मैं एक सूची दृश्य के लिए एक कस्टम एडाप्टर कोडिंग कर रहा हूं जिसमें इसकी एक कस्टम सूची है।कस्टम एडाप्टर में NullPointerException getView

जाहिर है, मुझे getView फ़ंक्शन लिखना है।

/*1*/ public View getView(int position, View convertView, ViewGroup parent) { 
/*2*/ View vi = convertView; 
/*3*/ if (convertView == null) 
/*4*/  vi = inflater.inflate(R.layout.result_list_item, null); 
/*5*/ 
/*6*/ TextView title = (TextView) vi.findViewById(R.id.tvTitle); 
/*7*/ TextView subtitle = (TextView) vi.findViewById(R.id.tvSubTitle); 
/*8*/ ImageView image = (ImageView) vi.findViewById(R.id.imageView1); 
/*9*/ 
/*10*/ title.setText(data.get(position).getDescription().toString()); 
/*11*/ subtitle.setText(data.get(position).getDate().toString()); 
/*12*/ String img = "http://someLink/" + data.get(position).getId() + "a_t.jpg"; 
/*13*/ imageLoader.DisplayImage(img, image); 
/*14*/ return vi; 
/*15*/ } 

मैं देखा है कि लाइन नंबर 6 पर कार्यक्रम एक NullPointer अपवाद के साथ दुर्घटनाओं लेकिन,: तो यहाँ मेरी कोड है।

यहाँ मेरी क्रैश रिपोर्ट है:

04-18 09:33:32.745: E/AndroidRuntime(2209): FATAL EXCEPTION: main 
04-18 09:33:32.745: E/AndroidRuntime(2209): java.lang.NullPointerException 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at com.package.mojo.NoPicAdapter.getView(NoPicAdapter.java:46) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.AbsListView.obtainView(AbsListView.java:1554) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.ListView.measureHeightOfChildren(ListView.java:1264) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.ListView.onMeasure(ListView.java:1175) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.View.measure(View.java:8366) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1017) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:386) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.View.measure(View.java:8366) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.View.measure(View.java:8366) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:531) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:309) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.View.measure(View.java:8366) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3138) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:250) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.View.measure(View.java:8366) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.ViewRoot.performTraversals(ViewRoot.java:847) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1868) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.os.Looper.loop(Looper.java:123) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at java.lang.reflect.Method.invoke(Method.java:507) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
04-18 09:33:32.745: E/AndroidRuntime(2209):  at dalvik.system.NativeStart.main(Native Method) 
निश्चित रूप से

, लेआउट और आइटम के लिए खुद मौजूद ...

किसी भी विचार?

अद्यतन: जब मैं डिबगिंग करते समय चर को देखता हूं, तो मुझे लगता है कि vi फुलाया नहीं गया था (क्यों? vi == null), क्यों?

+1

क्या आप कृपया हमें बता सकते हैं कि आपके पोस्ट कोड स्निपेट की कौन सी पंक्ति 'NoPicAdapter.java: 46' से मेल खाती है? – dbm

+0

क्या उपरोक्त कोड में आपकी लाइन संख्या 6 NoPicAdapter में लाइन संख्या 46 से मेल खाती है? इसके अलावा आप inflater वस्तु कैसे बना रहे हैं? – Shubhayu

+0

लाइन 6 वास्तव में मूल कोड में लाइन 46 है, बस इसे मेरे प्रश्न – thepoosh

उत्तर

13

बदलें इस:

vi = inflater.inflate(R.layout.result_list_item, null); 
इस के लिए

:

vi = inflater.inflate(R.layout.result_list_item, parent, false); 

यह कैसे अपने एडाप्टर होना चाहिए:

public class NoPicAdapter extends ArrayAdapter<NewAndCalendar> { 

    private ArrayList<NewAndCalendar> data; 
    private Activity mActivity; 
    private LayoutInflater inflater = null; 

    public NoPicAdapter(Activity a, ArrayList<NewAndCalendar> d) { 
     super(a, R.layout.no_pic_list_item, d); 
     mActivity = a; 
     data = d; 
     inflater = (LayoutInflater) mActivity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi = convertView; 
     if (vi == null) 
      vi = inflater.inflate(R.layout.no_pic_list_item, parent, false); 
     TextView title = (TextView) vi.findViewById(R.id.noPicTitle); 
     TextView subtitle = (TextView) vi.findViewById(R.id.noPicSubtitle); 

     title.setText(data.get(position).getmTitle()); 
     subtitle.setText(data.get(position).getmPubDate()); 

     return vi; 
    } 

} 
+0

को दूसरे संस्करण में बदलने के वृश्चिक के लिए संपादित किया गया है, vi अभी भी शून्य – thepoosh

+0

बराबर बराबर है, आपका पूरा कोड – waqaslam

+0

[यह] (http: // pastie। संगठन/निजी/nipgdadde02hft9gx0f0a) 'एडाप्टर' के विस्तार के बजाय कस्टम एडाप्टर – thepoosh

1

आप inflater आरंभ कर रहे हैं? अगर इसे शुरू नहीं किया जाता है।

inflater = getLayoutInflater(); 

या

inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
+1

प्रारंभिक कोड कन्स्ट्रक्टर में है: 'inflater = (layoutInflater) mActivity.getSystemService (Context.LAYOUT_INFLATER_SERVICE);' – thepoosh

+0

और क्या गतिविधि गतिविधि आप गतिविधि से गुजर रही है? – Shubhayu

+0

हां, रचनात्मकता के लिए गतिविधि पारित गतिविधि है। – thepoosh

2

इस

vi = LayoutInflater.from (mActivity) .inflate (R.layout.result_list_item, नल) की कोशिश करो;

यदि मैक्टिविटी आपकी गतिविधि संदर्भ गतिविधि से गुजरती है जहां आप इस एडाप्टर का ऑब्जेक्ट बना रहे हैं।

+0

जिसने चाल की है, अब एकमात्र समस्या यह है कि मुझे बहुत नया कोड 'NullPointerException' है जो मुझे शेष कोड से मिला है ... – thepoosh

+0

नई समस्या क्या है? मुझे लगता है कि SAXParser लागू करने के साथ – Shubhayu

+0

समस्याएं। कुछ सही ढंग से पार्स नहीं किया जा रहा है – thepoosh

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