2015-10-03 3 views
0

У меня есть несколько ArrayLists, которые идут в адаптер ListView. То, что я пытаюсь сделать, это своего рода, только один из них ArrayLists ...Android Сортировка ListView

names = new ArrayList<String>(); 
    locations = new ArrayList<String>(); 
    timedates = new ArrayList<String>(); 

    //arraylists populated here 

    adapter = new HomeAdapter(getActivity(), names, locations, timedates); 
    setListAdapter(adapter); 

Как бы идти о сортировке весь ListView по timedates, например?

Цените любую помощь. Благодаря!

+0

Пожалуйста, используйте код сортировки, который вы пробовали. также дайте ссылку сортировки, как вы хотите. – Tauqir

+0

попытаться создать класс модели –

ответ

1

Вы должны использовать DataModel только с одним ArryList. Подробности приведены ниже:

arrayList= new ArrayList<DataModel>(); 

//arraylists populated here 

adapter = new HomeAdapter(getActivity(), arrayList); 
setListAdapter(adapter); 

DataModel класс будет выглядеть следующим образом:

public class DataModel { 

    public String names; 
    public String locations; 
    public String timedates; 

} 

Наконец сортировка:

Collections.sort(arrayList, new SortList()); 

public class SortList implements Comparator<DataModel> { 
    public int compare(DataModel arg0, DataModel arg1) { 
     int flag = arg0.timedates.compareTo(arg1.timedates); 
     return flag; 
    } 
} 

Edit 1:

Чтобы добавить данные в список:

DataModel dataModel = new DataModel(); 
dataModel.names = "Ashiq"; 
dataModel.locations = "Khulna, Bangladesh"; 
dataModel.timedates = System.currentTimeMillis(); 

arrayList.add(dataModel); 

Вам не нужно использовать арраист отдельно для каждого элемента. Просто оберните все строки в dataModel и добавьте его в arraylist для добавления каждого набора данных.

Дайте мне знать, если что-то не так ясно.

+0

Как я могу добавить мои текущие 'ArrayLists' в этот класс? Благодаря! – zngb

+0

Кажется довольно ясным сейчас. Одна вещь: как я получу данные из элементов списка для использования в адаптере listview? Например, если бы я хотел потянуть dataModel.name для определенной позиции. Благодаря! – zngb

+0

DataModel dataModel = (DataModel) arrayList.get (position); Строковое имя = dataModel.names; – Ashiq

0

Попробуйте

Collections.sort(timedates,new Comparator<String>(){ 
    @Override 
    public int compare(String s1, String s2){ 
     return s1.compareTo(s2); 
    } 
}); 
adapter.notifyDataSetChanged(); 
+0

Разве это не тот, кто имеет дело с арраистом? Если вы хотите отсортировать весь список на основе 'timedates' – zngb

+0

, вам нужно создать класс с именем, местоположением и timedates в качестве полей. Создайте arraylist этого класса, а затем используйте метод сортировки. –

+0

@zngb, который сортирует arraylist, но используя 'adapter.notifyDataSetChanged()' данные в listview сортируются. –

Смежные вопросы