2013-06-20 44 views
0

我想从服务器获取图像到网格视图,但每当我运行我的应用程序时,不幸的是应用程序已停止,由于java.lang.NullPointerException从服务器获取图像到网格视图,获取java.lang.NullPointerException

在错误app.tabsample.GalleryActivity $ ImageAdapter.getCount(GalleryActivity.java:170)

错误行回报MyArr.size();

public int getCount() { 
      // Error line 
      return MyArr.size(); 
     } 

完整的logcat:

06-20 05:15:23.298: D/dalvikvm(833): GC_CONCURRENT freed 302K, 7% free 5823K/6248K, paused 71ms+24ms, total 162ms 
06-20 05:15:23.418: I/Choreographer(833): Skipped 78 frames! The application may be doing too much work on its main thread. 
06-20 05:15:23.678: I/Choreographer(833): Skipped 45 frames! The application may be doing too much work on its main thread. 
06-20 05:15:24.248: W/System.err(833): org.json.JSONException: Unterminated object at character 111 of [{"ImageID":"1","ImageName":"Item1","ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu01.jpg,"ImagePath_FullPhoto":"http://www.littleindia.ca/images/menu/fmenu01.jpg"},{"ImageID":"2","ImageName":"Item2","ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu02.jpg","ImagePath_FullPhoto":"http://www.littleindia.ca/images/menu/fmenu02.jpg"},{"ImageID":"3","ImageName":"Item3","ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu03.jpg","ImagePath_FullPhoto":"http://www.littleindia.ca/images/menu/fmenu03.jpg"},{"ImageID":"4","ImageName":"Item4","ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu04.jpg","ImagePath_FullPhoto":"http://www.littleindia.ca/images/menu/fmenu04.jpg"}] 
06-20 05:15:24.248: W/System.err(833): at org.json.JSONTokener.syntaxError(JSONTokener.java:450) 
06-20 05:15:24.329: W/System.err(833): at org.json.JSONTokener.readObject(JSONTokener.java:394) 
06-20 05:15:24.348: W/System.err(833): at org.json.JSONTokener.nextValue(JSONTokener.java:100) 
06-20 05:15:24.359: W/System.err(833): at org.json.JSONTokener.readArray(JSONTokener.java:430) 
06-20 05:15:24.410: W/System.err(833): at org.json.JSONTokener.nextValue(JSONTokener.java:103) 
06-20 05:15:24.410: W/System.err(833): at org.json.JSONArray.<init>(JSONArray.java:87) 
06-20 05:15:24.418: W/System.err(833): at org.json.JSONArray.<init>(JSONArray.java:103) 
06-20 05:15:24.418: W/System.err(833): at app.tabsample.GalleryActivity$DownloadJSONFileAsync.doInBackground(GalleryActivity.java:230) 
06-20 05:15:24.418: W/System.err(833): at app.tabsample.GalleryActivity$DownloadJSONFileAsync.doInBackground(GalleryActivity.java:1) 
06-20 05:15:24.418: W/System.err(833): at android.os.AsyncTask$2.call(AsyncTask.java:287) 
06-20 05:15:24.468: W/System.err(833): at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
06-20 05:15:24.479: W/System.err(833): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
06-20 05:15:24.479: W/System.err(833): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
06-20 05:15:24.479: W/System.err(833): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
06-20 05:15:24.489: W/System.err(833): at java.lang.Thread.run(Thread.java:856) 
06-20 05:15:24.498: D/AndroidRuntime(833): Shutting down VM 
06-20 05:15:24.498: W/dalvikvm(833): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 
06-20 05:15:24.530: E/AndroidRuntime(833): FATAL EXCEPTION: main 
06-20 05:15:24.530: E/AndroidRuntime(833): java.lang.NullPointerException 
06-20 05:15:24.530: E/AndroidRuntime(833): at app.tabsample.GalleryActivity$ImageAdapter.getCount(GalleryActivity.java:170) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.widget.GridView.setAdapter(GridView.java:182) 
06-20 05:15:24.530: E/AndroidRuntime(833): at app.tabsample.GalleryActivity.ShowAllContent(GalleryActivity.java:143) 
06-20 05:15:24.530: E/AndroidRuntime(833): at app.tabsample.GalleryActivity$DownloadJSONFileAsync.onPostExecute(GalleryActivity.java:256) 
06-20 05:15:24.530: E/AndroidRuntime(833): at app.tabsample.GalleryActivity$DownloadJSONFileAsync.onPostExecute(GalleryActivity.java:1) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.os.AsyncTask.finish(AsyncTask.java:631) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.os.AsyncTask.access$600(AsyncTask.java:177) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.os.Looper.loop(Looper.java:137) 
06-20 05:15:24.530: E/AndroidRuntime(833): at android.app.ActivityThread.main(ActivityThread.java:5041) 
06-20 05:15:24.530: E/AndroidRuntime(833): at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 05:15:24.530: E/AndroidRuntime(833): at java.lang.reflect.Method.invoke(Method.java:511) 
06-20 05:15:24.530: E/AndroidRuntime(833): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
06-20 05:15:24.530: E/AndroidRuntime(833): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
06-20 05:15:24.530: E/AndroidRuntime(833): at dalvik.system.NativeStart.main(Native Method) 
06-20 05:15:27.409: I/Process(833): Sending signal. PID: 833 SIG: 9 

GalleryActivity.java:

 public class ImageAdapter extends BaseAdapter 
     { 
      private Context context; 
      private ArrayList<HashMap<String, Object>> MyArr = new ArrayList<HashMap<String, Object>>(); 

      public ImageAdapter(Context c, ArrayList<HashMap<String, Object>> myArrList) 
      { 
       // TODO Auto-generated method stub 
       context = c; 
       MyArr = myArrList; 
      } 
      public int getCount() { 
       // TODO Auto-generated method stub 
       return MyArr.size(); 
      } 

      public Object getItem(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 


      public long getItemId(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 
      public View getView(int position, View convertView, ViewGroup parent) { 
       // TODO Auto-generated method stub 
       LayoutInflater inflater = (LayoutInflater) context 
         .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       if (convertView == null) { 
        convertView = inflater.inflate(R.layout.activity_gallery_column, null); 
       } 
       // ColPhoto 
       ImageView imageView = (ImageView) convertView.findViewById(R.id.ColPhoto); 
       imageView.getLayoutParams().height = 80; 
       imageView.getLayoutParams().width = 80; 
       imageView.setPadding(10, 10, 10, 10); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       try 
       { 
        imageView.setImageBitmap((Bitmap)MyArr.get(position).get("ImageThumBitmap")); 
       } catch (Exception e) { 
        // When Error 
        imageView.setImageResource(android.R.drawable.ic_menu_report_image); 
       } 
       // ColID 
       TextView txtID = (TextView) convertView.findViewById(R.id.ColID); 
       txtID.setPadding(5, 0, 0, 0); 
       txtID.setText("ID : " + MyArr.get(position).get("ImageID").toString()); 

       // ColName 
       TextView txtName = (TextView) convertView.findViewById(R.id.ColName); 
       txtName.setPadding(5, 0, 0, 0); 
       txtName.setText("Name : " + MyArr.get(position).get("ImageName").toString()); 

       return convertView; 
      } 
     } 
+0

您的JSON数据的第一个问题检查它正确 –

回答

1

我在你的JSON你试图解析望出去在"ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu01.jpg. 处有一个缺失的“字符请确保您传递了正确的json。它应该是:"ImagePath_Thumbnail":"http://www.littleindia.ca/images/menu/fmenu01.jpg"。 其JSON解析错误,这基本上导致你空指针异常

+0

谢谢,并抱歉,家伙愚蠢的错误:) – Sun

0

其原木明确规定,调用ImageAdapter当你MyArr对象仍然为空,所以空指针异常...

在你onPostExecute()DownloadJSONFileAsync检查,如果MyArrList != null ..

if(MyArrList != null) 
ShowAllContent(); 

检查您的JSONObject以及为什么它返回null ..