I'm new on android programming, and still learning about its concept, I'm currently building an app that will get some data from online database and stored it in ArrayList> Type, then I will show the data,
I've successfully get the data from database and successfully showed it on ListView as well,, and now I want to sort the data based on its date (there is one date value stored in the hashmap),
I've read how to do it in these question :
How to sort data of ArrayList of hashmap on The Basis of Date
I don't really get the concept and still have no idea how it could be worked with my current code. Hope you could help me with my code,
This is my code :
public class Notification extends Activity {
userSessionManager session;
String Username, clickedId, clickedTitle, toastMessage;
String urlUpdateGroupConfirmation, urlGetNotif;
JSONParser jsonParser;
ProgressDialog pd;
JSONArray jsonArray = null;
private ArrayList<HashMap<String, String>> whatsNew;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.notification);
    getActionBar().setDisplayShowHomeEnabled(false);
    sessionAndDeclaration();
    new AttemptParseNotification().execute();
}
private void sessionAndDeclaration() {
    // TODO Auto-generated method stub
    session = new userSessionManager(getApplicationContext());
    HashMap<String, String> user = session.getUserDetails();
    Username = user.get(userSessionManager.KEY_USERNAME);
    myIP ip = new myIP();
    String publicIp = ip.getIp();
    String thisPhp = "viewMyNotification.php";
    String updateGConf = "doUpdateGroupDetail.php";
    urlGetNotif = publicIp + thisPhp;
    urlUpdateGroupConfirmation = publicIp + updateGConf;
    jsonParser = new JSONParser();
    whatsNew = new ArrayList<HashMap<String, String>>();
}
class myMapComparator implements Comparator<Map<String, String>> {
    @Override
    public int compare(Map<String, String> lhs, Map<String, String> rhs) {
        // TODO Auto-generated method stub
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return df.parse(lhs.get("date")).compareTo(
                    df.parse(rhs.get("date")));
        } catch (ParseException e) {
            throw new IllegalArgumentException(e);
        }
    }
}
class AttemptParseNotification extends AsyncTask<Void, Void, Boolean> {
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
        pd = new ProgressDialog(Notification.this);
        pd.setIndeterminate(false);
        pd.setCancelable(true);
        pd.setMessage("Loading...");
        pd.show();
    }
    @Override
    protected Boolean doInBackground(Void... arg0) {
        // TODO Auto-generated method stub
        int success = 0;
        try {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("Username", Username));
            Log.d("Request!", "Passing Username to server");
            JSONObject json = jsonParser.makeHttpRequest(urlGetNotif,
                    "POST", params);
            success = json.getInt("success");
            if (success == 1) {
                Log.d("Response", "Getting todays");
                jsonArray = json.getJSONArray("array");
                try {
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject c = jsonArray.getJSONObject(i);
                        String newId = c.getString("id");
                        String newType = c.getString("type");
                        String newTitle = c.getString("title");
                        String newDisplayed = newTitle + "(" + newType
                                + ")";
                        String newDate = c.getString("date");
                        HashMap<String, String> map = new HashMap<String, String>();
                        map.put("id", newId);
                        map.put("title", newTitle);
                        map.put("date", newDate);
                        map.put("type", newType);
                        map.put("displayed", newDisplayed);
                        whatsNew.add(map);
                        Collections.sort(whatsNew, new myMapComparator());
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }
    @Override
    protected void onPostExecute(Boolean result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        pd.dismiss();
        if (whatsNew.size() > 0) {
            viewNews();
        } else {
            Toast.makeText(getBaseContext(), "No new notification",
                    Toast.LENGTH_LONG).show();
        }
    }
}
public void viewNews() {
    // TODO Auto-generated method stub
    ListView lv = (ListView) findViewById(R.id.lv_notif);
    ListAdapter adapter = new SimpleAdapter(this, whatsNew,
            R.layout.notificationlist_item, new String[] { "title", "type",
                    "date" }, new int[] { R.id.title_notif,
                    R.id.type_notif, R.id.date_notif });
    lv.setAdapter(adapter);
}
}
 
     
     
    