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?

Video liên quan

Chủ Đề