Как отсортировать элементы списка в пользовательском listview в Android?

#java #android #listview

#java #Android #listview

Вопрос:

Я пытаюсь отсортировать элементы списка, я использую пользовательский listview. В этом я сохранил элементы в строковом массиве. но при перечислении элементов в listview отображаются пустые элементы вместо отсортированных элементов. Но при отладке массивы строк сохраняются в отсортированном формате. Как это решить?

Комментарии:

1. Не могли бы вы поделиться своим кодом?

2. я пытаюсь отсортировать элементы списка, это правильно или вы пытаетесь сохранить элемент правильно

3. я пытаюсь отсортировать уже сохраненные элементы списка

4. PattabiRaman попробуйте с помощью Comparator отсортировать элементы

Ответ №1:

  /**
    * need to sort the ArrayList based on Person’s firstName. 
   *  Here inside the Collections.sort method we are 
    * implementing the Comparator interface and overriding the compare method. 
    */

        Collections.sort(employeeList, new Comparator(){

            public int compare(Object o1, Object o2) {
                ContactInfo p1 = (ContactInfo) o1;
                ContactInfo p2 = (ContactInfo) o2;
               return p1.getEmployeeName().compareToIgnoreCase(p2.getEmployeeName());
            }

        });





        this.fav_adapter  = new FavoritesAdapter(this, R.layout.favorite_list_view, employeeList);
        setListAdapter(this.fav_adapter);





public class ContactInfo {

    private String employeeLpn;
    private String employeeName;


/**
     * Gets value for employeeLpn
     * @return the employeeLpn
     */
    public String getEmployeeLpn() {
        return employeeLpn;
    }
    /**
     * Sets the value for employeeLpn
     * @param employeeLpn the employeeLpn to set
     */
    public void setEmployeeLpn(String employeeLpn) {
        this.employeeLpn = employeeLpn;
    }
    /**
     * Gets value for employeeName
     * @return the employeeName
     */
    public String getEmployeeName() {
        return employeeName;
    }
    /**
     * Sets the value for employeeName
     * @param employeeName the employeeName to set
     */
    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }

}
  

Ответ №2:

Я видел код, и у меня возникла потенциальная проблема с приведенным ниже заявлением

 HashMap<String, String> sampleObjectMap = new HashMap<String, String>();

            titles[i-1]=**sampleObjectMap.put("title", dh.val1(i-1))**;
            persons[i-1]=**sampleObjectMap.put("person", dh.pers(i-1))**;
            priorities[i-1]=**sampleObjectMap.put("priorty", setpriority(String.valueOf(dh.getpriority(i-1))))**;
            dates[i-1]=**sampleObjectMap.put("dat", getDate(Long.valueOf(dh.time(i-1)),"dd/MM/yyyy"))**;
  

Это смелое утверждение вернет значение любого предыдущего сопоставления с указанным ключом или null, если такого сопоставления не было. поэтому я предполагаю, что в этом случае не было выполнено никакого предыдущего сопоставления. поэтому, пожалуйста, убедитесь, что ваш массив заполнен