2016-04-14 3 views
0

У меня есть данные в базе данных SQLite, которую я хотел бы показать в List на основе небольшой логики.Фильтр записей из SQLite для отображения в списке

У меня есть три поля в моей таблице,

first field : id 
second field : title 
third field : type 

где Тип может быть: Monthly или Yearly

Вот мой код:

// Generate real data for each item 
    public List<ReminderItem> generateData(int count) { 
     ArrayList<ReminderItem> items = new ArrayList<>(); 

     // Get all reminders from the database 
     List<Reminder> reminders = rb.getAllReminders(); 

     // Initialize lists 
     List<String> Titles = new ArrayList<>(); 
     List<String> Type = new ArrayList<>(); 
     List<Integer> IDList= new ArrayList<>(); 

     // Add details of all reminders in their respective lists 
     for (Reminder r : reminders) { 
      Titles.add(r.getTitle()); 
      Type.add(r.getType()); 
      IDList.add(r.getID()); 
     } 
     return items; 
     } 

Это ситуация, где мне нужна помощь от вас, ребята. Как вы все еще видите, я показываю каждого и every record от база данных к списку, вне зависимости от которой Тип он принадлежит.

Теперь, я просто хочу, чтобы показать records в List, которая принадлежит к типу «Monthly» только

Так точно, что я должен делать? Как показать записи в списке только для типа «Ежемесячно»

У меня есть переменная String, а именно: strType = "Monthly";

ответ

4

У вас есть две опции, чтобы сделать это.

Сначала можно получить только те записи из базы данных, которые напоминают тип «Ежемесячно», выполнив нижеследующую инструкцию sql.

SELECT id,title,type FROM table_name WHERE type = "Monthly" 

Во-вторых, тип проверки напоминание равно «Ежемесячно» при добавлении данных в список.

for (Reminder r : reminders) { 

     String reminderType = r.getType(); 
     if(reminderType.equalsIgnoreCase(strType)) { 

      Titles.add(r.getTitle()); 
      Type.add(reminderType); 
      IDList.add(r.getID()); 
     } 
    } 

Полный код

// Generate real data for each item 
public List<ReminderItem> generateData(int count) { 

    String strType = "Monthly"; 

    ArrayList<ReminderItem> items = new ArrayList<>(); 

    // Get all reminders from the database 
    List<Reminder> reminders = rb.getAllReminders(); 

    // Initialize lists 
    List<String> Titles = new ArrayList<>(); 
    List<String> Type = new ArrayList<>(); 
    List<Integer> IDList= new ArrayList<>(); 

    // Add details of all reminders which type="Monthly" in their respective lists 
    for (Reminder r : reminders) { 

     String reminderType = r.getType(); 
     if(reminderType.equalsIgnoreCase(strType)) { 

      Titles.add(r.getTitle()); 
      Type.add(reminderType); 
      IDList.add(r.getID()); 
     } 
    } 
    return items; 
} 
+0

отличная работа. :) –

+0

Большое спасибо @ HirendrasinhS.Rathod –

0

При выборе из вашей БД SQLite вы можете добавить фильтр там

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_A + " WHERE " + 
COLUMN_TYPE + "=?", new String[]{ arg0 }); // arg0 = "Monthly" 

Это позволит увеличить производительность вместо списка фильтрации после загрузки

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