2016-10-10 4 views
0

Я сортирую JSONArray и показываю их в виде пользовательского списка, но после сортировки данные не изменяются в представлении пользовательского списка.После сортировки JSONArray, пользовательский список не изменился?

Вот мой код для потрясающей кнопки, чтобы выбрать, какой вид должна быть выполнить:

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(); 


    } 
}); 

И после выбора, сделанного в потрясающей кнопке мыши сортировать 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(); но мой пользовательский список не влияет на сортировку. Пожалуйста, предложите мне, что делать.

+0

Нельзя сортировать ListView или Adapter. Вам нужно передать уже отсортированный массив в адаптер. – Marat

+0

Ваше среднее, чтобы сказать сначала данные массива синтаксического анализа, а затем установить на адаптер ... – Manish

+0

Отсортируйте свой набор данных и вызовите 'notifyDataSetChanged' на адаптер. –

ответ

1

Перед установкой данных в Listview вы должны отсортировать данные с помощью класса компаратора в java.

Вы создаете один класс модели со всей переменной, какой вы хотите (имя, 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); 
} 
} 
+0

can u plz предоставить пример .. потому что я ищу везде ...?/ – Manish

+0

я не понял ... приведенный выше пример. – Manish

1

Вместо того чтобы создать один объект данных со строки массива для его полей. Создайте один объект для каждого элемента JsonArray. Создайте список объектов из JsonArray. Пропустите этот список в своем пользовательском адаптере. Установите адаптер списка в качестве пользовательского адаптера.

Теперь, когда вы хотите отсортировать данные по любому полю. Просто используйте компаратор сборников Java или вы можете написать собственный собственный компаратор.

После этого просто вызовите notifyDataSetChanged() на адаптере.

Edit -.

Вы можете создать свою модель SearchItem, как показано ниже

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) 
} 

Здесь searchList передается как ссылка, поэтому любое обновление в этом списке, за которым следует уведомление о вызове на адаптер, будет отражать это изменение.

Ваш класс listview может быть изменен следующим образом. Метод parseSearchList() возвращает массив всех списков поиска.

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 переменной-членом не локальной.

+0

любой пример plz ... – Manish

+0

Pls принимает ответ, если это помогло. –

+0

Я обновляю вопрос, пожалуйста, проверьте – Manish

1

В моем случае я получил homeList (ArrayList модели 'Home') из класса JSONParser так Befor 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, а затем нам нужно setAdapter.

Попробуйте это, я думаю, это поможет вам.

+0

thanx для ответа дайте мне попробовать .. я дам вам знать – Manish

+0

, но я не использовал get и задал в своем классе адаптера – Manish

+0

Думаю, вам нужно использовать модель с геттер-сеттером, которая будет менее сложной и более надежной для вас .. –

1

Да, я думаю, вы должны использовать класс модели. Вот пример с 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(); 
     } 
    } 

Попробуйте, если это вам поможет. Спасибо.

+0

Позвольте мне попробовать ... спасибо – Manish

+0

эй это для сортировки массива json ... – Manish

+0

нет, это отсортирует ваш весь арарист класса модели. Например: вы получаете несортированный (обычный массив) в массив. теперь вам нужно написать код для метода collection.sort. и это будет сортировать весь модельный класс arraylist. –

1

У меня есть сортировка архаиста по имени ArrayList> addressaray; добавить данные ответа в администратор, используя

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; 
} 
} 
Смежные вопросы