#android #json #sorting #listview #collections
#Android #json #сортировка #listview #Коллекции
Вопрос:
Я сортирую JSONArray и показываю их в пользовательском представлении списка, но после сортировки данные не изменяются в пользовательском представлении списка.
Вот мой код для кнопки fab, чтобы выбрать, какая сортировка должна выполняться:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder=new AlertDialog.Builder(SearchResult.this);
builder.setTitle("Sort List Item");
builder.setItems(new CharSequence[]{"By Name", "By Father Name","By EPIC","By House Number"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
switch (i)
{
case 0:
Toast.makeText(getApplicationContext(), "By Name", Toast.LENGTH_SHORT).show();
sortJsonTechnique="1";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 1:
Toast.makeText(getApplicationContext(), "By Father Name", Toast.LENGTH_SHORT).show();
sortJsonTechnique="2";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 2:
Toast.makeText(getApplicationContext(), "By EPIC", Toast.LENGTH_SHORT).show();
sortJsonTechnique="3";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
case 3:
Toast.makeText(getApplicationContext(), "By House Number", Toast.LENGTH_SHORT).show();
sortJsonTechnique="4";
if (myData)
{
sortByName(sortdata,sortJsonTechnique);
}
break;
default:
break;
}
}
});
builder.show();
}
});
И после выбора, сделанного в кнопке fab, я сортирую массив json.
Вот код для синтаксического анализа массива json:
private void sortByName(String mysortJson,String sortType)
{
List<JSONObject> jsonObjects=new ArrayList<JSONObject>();
try {
JSONObject object=new JSONObject(mysortJson);
JSONArray jsonArray=object.getJSONArray("Data");
for (int i=0;i<jsonArray.length();i )
{
jsonObjects.add(jsonArray.getJSONObject(i));
}
if (sortType.equals("1"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("Name");
// Log.e("Value1","" val1);
val2=(String) b.get("Name");
// Log.e("Value2","" val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j )
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c )
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals("2"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("FName");
// Log.e("Value1","" val1);
val2=(String) b.get("FName");
// Log.e("Value2","" val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j )
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c )
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals("3"))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("EPIC");
// Log.e("Value1","" val1);
val2=(String) b.get("EPIC");
// Log.e("Value2","" val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j )
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c )
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
else if (sortType.equals(4))
{
Collections.sort(jsonObjects, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject a, JSONObject b) {
String val1=new String();
String val2=new String();
try {
val1=(String) a.get("HouseNo");
// Log.e("Value1","" val1);
val2=(String) b.get("HouseNo");
// Log.e("Value2","" val2);
} catch (JSONException e) {
e.printStackTrace();
}
return val1.compareTo(val2);
}
});
for (int j=0;j<jsonObjects.size();j )
{
jsonArray.put(jsonObjects.get(j));
}
voter_id=new String[jsonArray.length()];
boothname_id=new String[jsonArray.length()];
voter_name=new String[jsonArray.length()];
voter_f_m_h_name=new String[jsonArray.length()];
voter_epic=new String[jsonArray.length()];
voter_h_no=new String[jsonArray.length()];
voter_mobile=new String[jsonArray.length()];
voter_gender=new String[jsonArray.length()];
voter_age=new String[jsonArray.length()];
get_voter_dob=new String[jsonArray.length()];
get_marriage_anniv=new String[jsonArray.length()];
get_voter_caste_id=new String[jsonArray.length()];
get_voter_status_id=new String[jsonArray.length()];
get_voter_social_status_id=new String[jsonArray.length()];
for (int c=0;c<jsonArray.length();c )
{
JSONObject fetchVoter = jsonArray.getJSONObject(c);
voter_id[c] = fetchVoter.getString(KEY_VOTER_ID);
boothname_id[c] = fetchVoter.getString(KEY_BOOTHNAME_ID);
voter_name[c] = fetchVoter.getString(KEY_SEARCH_NAME);
voter_f_m_h_name[c] = fetchVoter.getString(KEY_SEARCH_F_H_M_NAME);
voter_epic[c] = fetchVoter.getString(KEY_SEARCH_EPIC_NAME);
voter_h_no[c] = fetchVoter.getString(KEY_SEARCH_HOUSE_NUMBER);
voter_mobile[c]=fetchVoter.getString(KEY_SEARCH_MOBILE);
voter_gender[c]=fetchVoter.getString(KEY_SEARCH_GENDER);
voter_age[c]=fetchVoter.getString(KEY_SEARCH_AGE);
get_voter_dob[c]=fetchVoter.getString(KEY_SEARCH_DOB);
get_marriage_anniv[c]=fetchVoter.getString(KEY_MARRIEGE_ANNIV);
get_voter_caste_id[c]=fetchVoter.getString(KEY_GET_CASTE_ID);
get_voter_status_id[c]=fetchVoter.getString(KEY_GET_STATUS_ID);
get_voter_social_status_id[c]=fetchVoter.getString(KEY_GET_SOCIAL_STATUS);
}
CustomSearchList adapter=new CustomSearchList(this,ParseJsonData.voter_id,ParseJsonData.boothname_id,ParseJsonData.voter_name,ParseJsonData.voter_f_m_h_name,ParseJsonData.voter_epic,ParseJsonData.voter_h_no,ParseJsonData.voter_mobile,ParseJsonData.voter_age,ParseJsonData.voter_gender,ParseJsonData.get_marriage_anniv,ParseJsonData.get_voter_dob,ParseJsonData.get_voter_caste_id,ParseJsonData.get_voter_status_id,ParseJsonData.get_voter_social_status_id);
searchlist.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
// Log.e("Length Array","" jsonArray.length());
// Log.e("Length List","" jsonObjects.size());
} catch (JSONException e) {
e.printStackTrace();
}
}
Я использую `adapter.notifyDataSetChanged(); но мой пользовательский список не влияет на сортировку.
Пожалуйста, подскажите мне, что делать.
Комментарии:
1. Вы не должны сортировать ListView или Adapter. Вам нужно передать уже отсортированный массив в адаптер.
2. Вы хотите сказать, что сначала проанализируйте данные массива, а затем установите значение adapter…
3. Отсортируйте свой набор данных и вызовите
notifyDataSetChanged
адаптер.4. @K Neeraj Lal можете ли вы привести пример для этого
5. Используйте класс POJO, используйте библиотеку GSON для анализа данных JSON, используйте a
Comparator
для сортировки и вызоваnotifyDataSetChanged
адаптера, чтобы отразить изменения в пользовательском интерфейсе.
Ответ №1:
Прежде чем устанавливать данные в Listview, вы должны отсортировать данные с помощью класса comparator в java.
вы создаете один класс модели со всеми переменными, которые вы хотите (name, booth_id и т. Д.), И Сохраняете каждый объект в ArrayList.
Collections.sort(ArrayListObject,new NameComparator());
пример
class NameComparator implements Comparator{
public int compare(Object o1,Object o2){
YourClassName s1=(YourClassName )o1;
YourClassName s2=(YourClassName )o2;
return s1.name.compareTo(s2.name);
}
}
Комментарии:
1. можете ли вы, пожалуйста, привести пример .. потому что я ищу везде …?/
Ответ №2:
В моем случае я получил homeList(ArrayList модели ‘Home’) из класса JsonParser, поэтому для setAdapter
Collections.sort(homeList, new Comparator<Home>() {
public int compare(Home emp1, Home emp2) {
int price1 = emp1.getPrice();
int price2 = emp2.getPrice();
return Integer.compare(price1, price2);
}
});
Adapter adapter = new Adapter(getActivity(),homeList);
listView.setadapter(adapter);
Итак, сначала будет отсортирован весь arraylist, а затем нам нужно установить ADAPTER.
Попробуйте это, я думаю, это вам поможет.
Комментарии:
1. спасибо за ответ, позвольте мне попробовать .. я дам вам знать
2. но я не использовал get и set в своем классе адаптера
3. Я думаю, вам нужно использовать Model с настройщиком getter, это будет менее сложным и более надежным для вас..
Ответ №3:
Вместо создания одного объекта данных со строковым массивом для его полей. Создайте один объект для каждого элемента JSONArray. Создайте список объектов из JSONArray. Передайте этот список в свой пользовательский адаптер. Установите адаптер listview в качестве пользовательского адаптера.
Теперь всякий раз, когда вы хотите отсортировать данные по любому полю. Просто используйте Java collections comparator или вы можете написать свой собственный пользовательский компаратор.
После этого просто вызовите notifyDataSetChanged() на адаптере.
Редактировать —
Вы можете создать свой элемент поиска модели, как показано ниже
class SearchItem {
private String voterId;
private String boothNameId;
private String searchName;
private String houseNumber;
private String gender;
public void setVoterId(String voterId) {
this.voterId = voterId;
}
public String getVoterId() {
return voterId;
}
......................(Add as many fields you want and their corresponding getter and setter methods)
}
Ваш класс синтаксического анализа Json можно изменить следующим образом (вы должны заполнить все поля класса searchItem.
class ParseJsonData {
public static ArrayList<SearchList> parseSearchresult(String jsonResponse) {
try {
JSONObject searchData = new JSONObject(jsonResponse);
JSONArray searchArray=searchData.getJSONArray(SEARCH_VOTER_ARRAY);
ArrayList<SearchItem> searchList = new ArrayList<SearchItem>();
for(int index = 0; index < searchArray.length(); index ) {
JSONObject searchItem = searchArray.get(index);
SearchItem item = new SearchItem();
item.setVoterId(searchItem.optString(KEY_VOTER_ID, null);
item.setBoothNameId(searchItem.optString(KEY_BOOTHNAME_ID, null);
item.setSearchName(searchItem.optString(KEY_SEARCH_NAME, null);
item.setHouseNumber(searchItem.optString(KEY_SEARCH_HOUSE_NUMBER, null);
item.setGender(searchItem.optString(KEY_SEARCH_GENDER, null);
searchList.add(item);
}
} catch (JSONException e) {
e.printStackTrace();
}
return searchList;
}
}
Теперь вы можете создать свой собственный пользовательский адаптер следующим образом
class CustomSearchList extends BaseAdapter {
ArrayList<SearchItem> mSearchList;
Context mContext;
public CustomSearchList(Context context, ArrayList<SearchItem> searchList) {
mContext = context;
mSearchList = searchList;
}
..........................(Implement methods for BaseAdapter or other methods you want to write)
}
Здесь список поиска передается как ссылка, поэтому любое обновление в этом списке, за которым следует вызов notify для адаптера, будет отражать изменения.
Ваш класс listview можно изменить следующим образом. Метод parseSearchList() возвращает arraylist всего списка поиска.
private void getList(String json) {
ArrayList<SearchItem> searchList = ParseJsonData.parseSearchresult(json);
CustomSearchList adapter = new CustomSearchList(this, searchList);
searchlistView.setAdapter(adapter);
mBtn.setOnClickListener(this, new OnClickListener() {
@Override
public void onClick(....) {
//Suppose when some button click happens for sorting
Collections.sort(searchList, <yourCustomComparator>);
notifyDataSetChanged();
}
});
}
Было бы лучше, если бы вы могли сделать searchList переменной-членом, а не локальной.
Комментарии:
1. Вы должны отсортировать уже переданный arraylist в адаптере. Проверьте мой пример выше. Этот подход может работать, но он неэффективен и не рекомендуется.
Ответ №4:
Да, я думаю, вам нужно использовать класс модели. Вот пример с onPostExecute.
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pd.dismiss();
try {
JSONObject object = new JSONObject(s.toString());
YourModelNameList = new ArrayList<>();
if (object.getString("status").equalsIgnoreCase("true")) {
JSONArray array = object.getJSONArray("data");
for (int i = 0; i < array.length(); i ) {
JSONObject jsonProduct = array.getJSONObject(i);
YourModelName home = new Home();
String special = jsonProduct.getString("special_price");
home.setId(jsonProduct.getString("product_id"));
home.setName(jsonProduct.getString("product_name"));
home.setPrice(jsonProduct.getString("price"));
YourModelArrayList.add(home);
}
}
Collections.sort(YourModelArrayList, new Comparator<YourModelName>() {
public int compare(YourModelName emp1, YourModelName emp2) {
int price1 = emp1.getPrice();
int price2 = emp2.getPrice();
return Integer.compare(price1, price2);
}
});
adapter = new YourModelArrayListAdapter(getActivity(), YourModelArrayList);
recyclerView.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
Попробуйте это, если это вам поможет. Спасибо.
Комментарии:
1. нет, это отсортирует весь ваш arraylist класса модели. Например: вы получаете несортированный (обычный массив) в массив. теперь вам нужно написать код для коллекций. метод сортировки. и это отсортирует весь ваш класс модели arraylist.
Ответ №5:
Я отсортировал список массивов по имени ArrayList> addressaray; добавьте данные ответа в arraylist с помощью
JSONObject object = new JSONArray(s.toString());
JSONArray arr1 = new JSONArray(object.getString("data").toString()).getJSONArray(0);
for (int i = 0; i < arr1.length(); i ) {
JSONObject jsonObject = arr1.getJSONObject(i);
HashMap<String, String> data = new HashMap<String, String>();
data.put("id", jsonObject.getString("id"));
data.put("date_inspected_details", jsonObject.getString("date_inspected_details"));
addressaray.add(data);
}
adapter = new PropertiesEvaluatedFragmentAdapter(getActivity(), addressaray, getActivity().getSupportFragmentManager());
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if(addressaray.size() > 0){
sortListView(item);
adapter.notifyDataSetChanged();
}else{
Toast.makeText(getActivity(), "No Record found.", Toast.LENGTH_SHORT).show();
}
}
private void sortListView(String option) {
switch (option) {
case "Date":
Collections.sort(addressaray, new Comparator<HashMap<String, String>>() {
final static String COMPARE_KEY = "date_inspected_details";
@Override
public int compare(HashMap<String, String> lhs,
HashMap<String, String> rhs) {
String Date1 = lhs.get(COMPARE_KEY);
String Date2 = rhs.get(COMPARE_KEY);
Log.e("Date1", Date1);
Log.e("Date2", Date2);
// Do your comparison logic here and retrn accordingly.
return Date1.compareTo(Date2);
}
});
break;
}
}JSONObject object = new JSONArray(s.toString());
JSONArray arr1 = new JSONArray(object.getString("data").toString()).getJSONArray(0);
for (int i = 0; i < arr1.length(); i ) {
JSONObject jsonObject = arr1.getJSONObject(i);
HashMap<String, String> data = new HashMap<String, String>();
data.put("id", jsonObject.getString("id"));
data.put("date_inspected_details", jsonObject.getString("date_inspected_details"));
addressaray.add(data);
}
adapter = new PropertiesEvaluatedFragmentAdapter(getActivity(), addressaray, getActivity().getSupportFragmentManager());
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if(addressaray.size() > 0){
sortListView(item);
adapter.notifyDataSetChanged();
}else{
Toast.makeText(getActivity(), "No Record found.", Toast.LENGTH_SHORT).show();
}
}
private void sortListView(String option) {
switch (option) {
case "Date":
Collections.sort(addressaray, new Comparator<HashMap<String, String>>() {
final static String COMPARE_KEY = "date_inspected_details";
@Override
public int compare(HashMap<String, String> lhs,
HashMap<String, String> rhs) {
String Date1 = lhs.get(COMPARE_KEY);
String Date2 = rhs.get(COMPARE_KEY);
Log.e("Date1", Date1);
Log.e("Date2", Date2);
// Do your comparison logic here and retrn accordingly.
return Date1.compareTo(Date2);
}
});
break;
}
}