Какой самый быстрый способ отфильтровать данные из ArrayList?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Какой самый быстрый способ отфильтровать данные из ArrayList?

Сообщение Anonymous »

Как я могу отфильтровать данные из ArrayList?
public class DateAndNames {

int day;
int month;
int year;
String name;

public DateAndNames(int day, int month, int year, String name) {
super();
this.day = day;
this.month = month;
this.year = year;
this.name = name;
}
public int getDay() {
return day;
}
...getters and setters...
< /code>

И я заполняю в базу данных, как это: < /p>

DbHandler hand = new DbHandler(this);
hand.add(new DateAndNames(20, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 3, 2008, "Jhon"));
hand.add(new DateAndNames(10, 2, 2004, "Jhon"));
hand.add(new DateAndNames(22, 3, 2008, "Jhon"));
< /code>

А затем я получаю данные в ArrayList, как это: < /p>

ArrayList list = new ArrayList();
list = hand.getData();
< /code>

И перед передачей списка в Baseadapter я хочу отфильтровать его, так что я сейчас делаю: < /p>

//filter by month and year:
public ArrayList filterTheList(int month , int year){
//the data from the database
list = hand.getData();
//temp list to store the filtered list
ArrayList filteredList = new ArrayList();

for (int i = 0; i < list.size(); i++) {
//check:
if(list.get(i).getMonth() == month && list.get(i).getYear() == year){

DateAndNames data = new DateAndNames(
list.get(i).getDay(),
list.get(i).getMonth(),
list.get(i).getYear(),
list.get(i).getName());
//The data filtered:
filteredList.add(data);
}
}
return filteredList;
}
< /code>

Теперь большая проблема: когда у меня есть очень очень очень большие данные для запуска на цикле для петли, как 300 рядов для фильтрации, приложение работает очень медленно! Даже если я использую Asynctask, он все еще работает медленно!
Я немного новичок, но я хотел бы для хороших советов < /p>

отредактирован: < /strong > Я тоже это попробовал .. < /p>

public ArrayList getData(int month ,int year,String name){
open();
ArrayList list = new ArrayList();

Cursor c = myDb.query(TABLE_DAY, null, "name= ? and month = ? and year = ?", new String[] {name,month+"",year+""}, null, null, null);
while (c.moveToNext()) {
DateAndNames resultData = new DateAndNames(
c.getInt(0), //id
c.getString(1),//name
c.getInt(2), //month
c.getInt(3));//year

list.add(resultData);
}
close();
return list;
}
< /code>

Но все еще не работает .. < /p>

Подробнее здесь: https://stackoverflow.com/questions/277 ... -arraylist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»