将JSON数据解析到listview android的最佳和最快方法

将JSON数据解析到listview android的最佳和最快方法,android,json,listview,android-arrayadapter,Android,Json,Listview,Android Arrayadapter,我的JSONDATA [{"Name":"47ABC","Location":"Chennai","Image":"47ABC_175.png","Funding":"150","Founded":"2013 ","Status":1,"RowVAl":1},{"Name":"57ABC","Location":"Mumbai","Image":"57ABC_175.png","Funding":"1250","Founded":"2010 ","Status":2,"RowVAl":1}]

我的
JSONDATA

[{"Name":"47ABC","Location":"Chennai","Image":"47ABC_175.png","Funding":"150","Founded":"2013 ","Status":1,"RowVAl":1},{"Name":"57ABC","Location":"Mumbai","Image":"57ABC_175.png","Funding":"1250","Founded":"2010 ","Status":2,"RowVAl":1}]
我的
onBackground
课程

 protected String doInBackground(String... params) {


  return Utils.getJSONStringHTTPResponse(connString + "/GetSearch", "1");

            }
public String getName() {
        return Name;
    }

    public void setName(String Name) {
        this.Name = Name;
    }
public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        ViewHolder holder;

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(row, null);

            holder = new ViewHolder();
            view.setTag(holder);
        } else {

            holder = (ViewHolder) view.getTag();

        }
        System.out.println(items.size()+" :: Sizess  "+ position);
        if ((items == null) || ((position + 1) > items.size()))
            return view;

        objBean = items.get(position);

        holder.tvName = (TextView) view.findViewById(R.id.name);
        holder.tvLocation = (TextView) view.findViewById(R.id.location);
        holder.tvSector = (TextView) view.findViewById(R.id.sector);
        holder.tvFounded = (TextView) view.findViewById(R.id.foundedyear);
        holder.tvFund=(TextView) view.findViewById(R.id.fundraising);*/
        holder.ivImage= (ImageView) view.findViewById(R.id.imageButton);

        if (holder.tvName != null && null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            //holder.tvName.setText(Html.fromHtml("Name:"+objBean.getName()));
            holder.tvName.setText(Html.fromHtml(objBean.getName()));
        }

       if (holder.tvLocation != null && null != objBean.getLocation()
                && objBean.getName().trim().length() > 0) {
            holder.tvLocation.setText(Html.fromHtml(objBean.getLocation()));
        }
        if (holder.tvStatus != null && null != objBean.getStatus()
                && objBean.getName().trim().length() > 0) {
            holder.tvStatus.setText(Html.fromHtml(objBean.getStatus()));
        }
        if (holder.tvSector != null&& null != objBean.getSector()
                && objBean.getName().trim().length() > 0) {
            holder.tvSector.setText(Html.fromHtml(objBean.getSector()));
        }
        if (holder.tvFounded != null&& 0 != objBean.getFounded()
                && objBean.getName().trim().length() > 0) {
            holder.tvFounded.setText(Html.fromHtml(""+objBean.getFounded()));
        }
        if (holder.tvFund != null&& 0 != objBean.getFundAsking()
                && objBean.getName().trim().length() > 0) {
            holder.tvFund.setText(Html.fromHtml(""+objBean.getFundAsking()));
        }
        if (holder.ivImage != null&& null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            URL myUrl = null;
            try {
                myUrl = new URL(objBean.getImage());
                InputStream inputStream = (InputStream)myUrl.getContent();
                Drawable drawable = Drawable.createFromStream(inputStream, null);
                holder.ivImage.setImageDrawable(drawable);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }



        return view;
    }
GetJSonStringtResponse
class

public static String getJSONStringHTTPResponse(String url,String EmpId) {
        String jsonString = null;
        String httpRequest=url;
        System.out.println("Coonstring : " + httpRequest);

        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(httpRequest);
        List<NameValuePair> list = new ArrayList<NameValuePair>();
        list.add(new BasicNameValuePair("PageNumber", EmpId));


        try {

            httpPost.setEntity(new UrlEncodedFormEntity(list));
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            jsonString = EntityUtils.toString(httpResponse.getEntity());
            jsonString = android.text.Html.fromHtml(jsonString).toString();
            System.out.println("Response: " + jsonString);

        } catch (Exception e) {
            return "Exception" + e.getMessage();
        }

        return jsonString;
    }   
我的
onPostExecute

                    JSONArray jsonArray=new JSONArray(result);

                    for (int i = 0; i < 3; i++) {
                        JSONObject objJson = jsonArray.getJSONObject(i);
                        System.out.println(i+"/"+objJson.getString(Name));
                        Item objItem = new Item();

                        objItem.setName(objJson.getString(Name));
                        objItem.setLocation(objJson.getString(Location));
                        objItem.setImage(objJson.getString(Image));
                        objItem.setFounded(objJson.getString(Funding));
                        objItem.setFounded(objJson.getString(Founded));
                        objItem.setStatus(objJson.getString(Status));
                        objItem.setRowVAls(objJson.getString(RowVAl));

                        System.out.println("obj::"+objItem);
                        arrayOfList.add(objItem);
                      }

 setAdapterToListview();
public void setAdapterToListview() {
        try {

        objAdapter = new NewsRowAdapter(MainActivity.this, R.layout.row,
                arrayOfList);

            listView.setAdapter(objAdapter);  //i get error on this line
        }catch(Exception e){
            e.printStackTrace();
            System.out.println(e.getMessage());

        }
    }

 protected String doInBackground(String... params) {


  return Utils.getJSONStringHTTPResponse(connString + "/GetSearch", "1");

            }
public String getName() {
        return Name;
    }

    public void setName(String Name) {
        this.Name = Name;
    }
public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        ViewHolder holder;

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(row, null);

            holder = new ViewHolder();
            view.setTag(holder);
        } else {

            holder = (ViewHolder) view.getTag();

        }
        System.out.println(items.size()+" :: Sizess  "+ position);
        if ((items == null) || ((position + 1) > items.size()))
            return view;

        objBean = items.get(position);

        holder.tvName = (TextView) view.findViewById(R.id.name);
        holder.tvLocation = (TextView) view.findViewById(R.id.location);
        holder.tvSector = (TextView) view.findViewById(R.id.sector);
        holder.tvFounded = (TextView) view.findViewById(R.id.foundedyear);
        holder.tvFund=(TextView) view.findViewById(R.id.fundraising);*/
        holder.ivImage= (ImageView) view.findViewById(R.id.imageButton);

        if (holder.tvName != null && null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            //holder.tvName.setText(Html.fromHtml("Name:"+objBean.getName()));
            holder.tvName.setText(Html.fromHtml(objBean.getName()));
        }

       if (holder.tvLocation != null && null != objBean.getLocation()
                && objBean.getName().trim().length() > 0) {
            holder.tvLocation.setText(Html.fromHtml(objBean.getLocation()));
        }
        if (holder.tvStatus != null && null != objBean.getStatus()
                && objBean.getName().trim().length() > 0) {
            holder.tvStatus.setText(Html.fromHtml(objBean.getStatus()));
        }
        if (holder.tvSector != null&& null != objBean.getSector()
                && objBean.getName().trim().length() > 0) {
            holder.tvSector.setText(Html.fromHtml(objBean.getSector()));
        }
        if (holder.tvFounded != null&& 0 != objBean.getFounded()
                && objBean.getName().trim().length() > 0) {
            holder.tvFounded.setText(Html.fromHtml(""+objBean.getFounded()));
        }
        if (holder.tvFund != null&& 0 != objBean.getFundAsking()
                && objBean.getName().trim().length() > 0) {
            holder.tvFund.setText(Html.fromHtml(""+objBean.getFundAsking()));
        }
        if (holder.ivImage != null&& null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            URL myUrl = null;
            try {
                myUrl = new URL(objBean.getImage());
                InputStream inputStream = (InputStream)myUrl.getContent();
                Drawable drawable = Drawable.createFromStream(inputStream, null);
                holder.ivImage.setImageDrawable(drawable);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }



        return view;
    }
包含所有的getter和setter

整个堆栈跟踪

07-13 12:07:16.825  11951-11951/com.company.agsl.letsventure W/System.err﹕ java.lang.NullPointerException
07-13 12:07:16.830  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.company.agsl.letsventure.MainActivity$MyTask.onPostExecute(MainActivity.java:126)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.company.agsl.letsventure.MainActivity$MyTask.onPostExecute(MainActivity.java:65)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask.finish(AsyncTask.java:631)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.Looper.loop(Looper.java:176)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5419)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
07-13 12:07:16.835  11951-11951/com.company.agsl.letsventure W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
07-13 12:07:16.840  11951-11951/com.company.agsl.letsventure W/System.err﹕ java.lang.NullPointerException
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.widget.ListView.setAdapter(ListView.java:470)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.company.agsl.letsventure.MainActivity.setAdapterToListview(MainActivity.java:169)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.company.agsl.letsventure.MainActivity$MyTask.onPostExecute(MainActivity.java:156)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.company.agsl.letsventure.MainActivity$MyTask.onPostExecute(MainActivity.java:65)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask.finish(AsyncTask.java:631)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask.access$600(AsyncTask.java:177)
07-13 12:07:16.850  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:99)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.os.Looper.loop(Looper.java:176)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5419)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
07-13 12:07:16.855  11951-11951/com.company.agsl.letsventure W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
07-13 12:07:16.860  11951-11951/com.company.agsl.letsventure I/System.out﹕ Exception:nullnull
07-13 12:07:16.865  11951-11951/com.company.agsl.letsventure D/AbsListView﹕ unregisterIRListener() is called
07-13 12:07:16.875  11951-11951/com.company.agsl.letsventure E/ViewRootImpl﹕ sendUserActionEvent() mView == null
07-13 12:07:17.110  11951-11951/com.company.agsl.letsventure D/AndroidRuntime﹕ Shutting down VM
07-13 12:07:17.110  11951-11951/com.company.agsl.letsventure W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41e6f700)
07-13 12:07:17.125  11951-11951/com.company.agsl.letsventure E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:330)
            at android.widget.ListView.onMeasure(ListView.java:1140)
            at android.view.View.measure(View.java:16831)
            at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728)
            at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477)
            at android.view.View.measure(View.java:16831)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at android.view.View.measure(View.java:16831)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
            at android.view.View.measure(View.java:16831)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5245)
            at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
            at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2586)
            at android.view.View.measure(View.java:16831)
            at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2189)
            at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1352)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1535)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364)
            at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
            at android.view.Choreographer.doCallbacks(Choreographer.java:591)
            at android.view.Choreographer.doFrame(Choreographer.java:561)
            at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:176)
            at android.app.ActivityThread.main(ActivityThread.java:5419)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
            at dalvik.system.NativeStart.main(Native Method)
getView

 protected String doInBackground(String... params) {


  return Utils.getJSONStringHTTPResponse(connString + "/GetSearch", "1");

            }
public String getName() {
        return Name;
    }

    public void setName(String Name) {
        this.Name = Name;
    }
public View getView(final int position, View convertView, ViewGroup parent) {
        View view = convertView;
        ViewHolder holder;

        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(row, null);

            holder = new ViewHolder();
            view.setTag(holder);
        } else {

            holder = (ViewHolder) view.getTag();

        }
        System.out.println(items.size()+" :: Sizess  "+ position);
        if ((items == null) || ((position + 1) > items.size()))
            return view;

        objBean = items.get(position);

        holder.tvName = (TextView) view.findViewById(R.id.name);
        holder.tvLocation = (TextView) view.findViewById(R.id.location);
        holder.tvSector = (TextView) view.findViewById(R.id.sector);
        holder.tvFounded = (TextView) view.findViewById(R.id.foundedyear);
        holder.tvFund=(TextView) view.findViewById(R.id.fundraising);*/
        holder.ivImage= (ImageView) view.findViewById(R.id.imageButton);

        if (holder.tvName != null && null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            //holder.tvName.setText(Html.fromHtml("Name:"+objBean.getName()));
            holder.tvName.setText(Html.fromHtml(objBean.getName()));
        }

       if (holder.tvLocation != null && null != objBean.getLocation()
                && objBean.getName().trim().length() > 0) {
            holder.tvLocation.setText(Html.fromHtml(objBean.getLocation()));
        }
        if (holder.tvStatus != null && null != objBean.getStatus()
                && objBean.getName().trim().length() > 0) {
            holder.tvStatus.setText(Html.fromHtml(objBean.getStatus()));
        }
        if (holder.tvSector != null&& null != objBean.getSector()
                && objBean.getName().trim().length() > 0) {
            holder.tvSector.setText(Html.fromHtml(objBean.getSector()));
        }
        if (holder.tvFounded != null&& 0 != objBean.getFounded()
                && objBean.getName().trim().length() > 0) {
            holder.tvFounded.setText(Html.fromHtml(""+objBean.getFounded()));
        }
        if (holder.tvFund != null&& 0 != objBean.getFundAsking()
                && objBean.getName().trim().length() > 0) {
            holder.tvFund.setText(Html.fromHtml(""+objBean.getFundAsking()));
        }
        if (holder.ivImage != null&& null != objBean.getName()
                && objBean.getName().trim().length() > 0) {
            URL myUrl = null;
            try {
                myUrl = new URL(objBean.getImage());
                InputStream inputStream = (InputStream)myUrl.getContent();
                Drawable drawable = Drawable.createFromStream(inputStream, null);
                holder.ivImage.setImageDrawable(drawable);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }



        return view;
    }

如果我没有错的话,你正在解析

"Status": 1, & "RowVAl": 1
作为

但它们显然是整数而不是字符串


这可能是获取空指针异常的原因。尝试修复它,它会解决问题

要获得最佳和最快的效果,请尝试以下方法:(使用Gson库)

输出:

[Items{Name='47ABC', Location='Chennai', Image='47ABC_175.png', Funding='150', Founded='2013 ', Status=1, RowVAI=0}, Items{Name='57ABC', Location='Mumbai', Image='57ABC_175.png', Funding='1250', Founded='2010 ', Status=2, RowVAI=0}]
问题就在这里

您可以在
Utils
class
getjsonstrighttpronse
方法中这样声明
jsonString
。 字符串jsonString=null

在任何情况下,
网络故障或
try{…}
中发生的任何错误
阻止您的
getjsonstrighttpResponse
必须返回null。所以当你试图 转换为JSONArray,您将在下一行中获得
空指针异常

 JSONArray jsonArray=new JSONArray(result);
解决方案是,您需要在try{}块内部找到错误,并需要修复。以及在
onPostExecute
方法中添加空指针检查

编辑1:

像这样编辑getView

if (view == null) {
            LayoutInflater inflater = (LayoutInflater) activity
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(row, null);

            holder = new ViewHolder();
holder.tvName = (TextView) view.findViewById(R.id.name);
        holder.tvLocation = (TextView) view.findViewById(R.id.location);
        holder.tvSector = (TextView) view.findViewById(R.id.sector);
        holder.tvFounded = (TextView) view.findViewById(R.id.foundedyear);
        holder.tvFund=(TextView) view.findViewById(R.id.fundraising);*/
        holder.ivImage= (ImageView) view.findViewById(R.id.imageButton);
            view.setTag(holder);
        } else {

            holder = (ViewHolder) view.getTag();

        }

您需要在if条件中添加findView方法stacktrace@Blackbelt这怎么可能。我正在添加对象。可能无法访问
arrayOfList.add
。尝试注释所有objItem的setter,看看发生了什么我已经注释了所有setter,但也没有用你是不是告诉我你有相同的stacktrace?好的,我会试试。。我还有一个参数作为FLOAT。我能为tat做些什么。您必须小心使用正确的数据类型从JSON获取数据。对于Int,使用getInt();对于float/double,使用getDouble()。请尝试一下,让我知道这是否有效。我刚刚尝试更改数据类型。。然后同样的stacktrace
NullPointerException
at
listview.setadapter
。我已经检查了
System.out.println(“响应:+jsonString”)其中有响应。确定。然后是下一步。您在适配器getView中做了什么?