Sort listview android

So I have a listview where I wanted to sort the NumberOfRecords in descending order. I have a custom array adapter but I called my sorting class before I place a data in my ArrayList, this my Asynctask receiving JSON:

public class SampleListTask extends AsyncTask { public ProgressDialog pDialog; @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(SampleActivity.this); pDialog.setMessage("Loading..."); pDialog.setCancelable(false); pDialog.show(); } @Override protected String doInBackground(String... path) { Thread.currentThread().setPriority(Thread.MAX_PRIORITY); Log.d(Constant.TAG_RANKING, path[0]); String apiRequestReturn = UtilWebService.getRequest(path[0]); if (apiRequestReturn.equals("")) { Log.d(Constant.TAG_SAMPLE, "WebService request is null"); return null; } else { Log.d(Constant.TAG_SAMPLE, "WebService request has data"); return apiRequestReturn; } } @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (null != pDialog && pDialog.isShowing()) { pDialog.dismiss(); } if (null == result || result.length() == 0) { application.shortToast("No data found from server"); } else { try { JSONObject sampleObject = new JSONObject(result); JSONArray jsonArray = sampleObject .getJSONArray(Constant.TAG_SAMPLE); for (int i = 0; i < jsonArray.length(); i++) { JSONObject objJson = jsonArray.getJSONObject(i); sample = new ArraySample(); sample.setId(objJson.getInt(Constant.TAG_SONGID)); sample.setThumbUrl(objJson .getString(Constant.TAG_IMAGEURL)); sample.setTitle(objJson .getString(Constant.TAG_NAME)); sample.setArtist(objJson .getString(Constant.TAG_ARTIST)); sample.setDuration(Utility .changeStringTimeFormat(objJson .getString(Constant.TAG_MUSICLENGTH))); sample.setNumberOfRecords(objJson .getString(Constant.TAG_NUMBEROFRECORDS)); Collections.sort(sampleList, new SortByRecordNumber()); // This where I call the class sampleList.add(sample); } } catch (JSONException e) { e.printStackTrace(); } setAdapterToListview(); } } public void setAdapterToListview() { objRowAdapter = new RowAdapterSample(getApplicationContext(), R.layout.item_sample, sampleList); sampleListView.setAdapter(objRowAdapter); } }

And here's my sorting class:

public class SortByRecordNumber implements Comparator { public int compare(Object o1, Object o2) { ArraySample p1 = (ArraySample) o1; ArraySample p2 = (ArraySample) o2; return p2.getNumberOfRecords().compareTo(p1.getNumberOfRecords()); }

}

But the result I'm getting is:

5 15 14 0 0

Is my sorting implementation wrong? Or should I parse it to Integer before return?