Поместите результаты SQLite в Java Object

Если ObservableCollection не является для вас решением, вы можете попробовать следующее:

A) Внедрить пользовательские EventArgs, которые будут содержать новый атрибут Count, когда событие будет запущено.

public class ChangeListCountEventArgs : EventArgs
{
    public int NewCount
    {
        get;
        set;
    }

    public ChangeListCountEventArgs(int newCount)
    {
        NewCount = newCount;
    }
}

B) Внедрите собственный список, который наследует от List и переопределяет атрибут Count и конструкторы в соответствии с вашими потребностями:

public class CustomList<T> : List<T>
{
    public event EventHandler<ChangeListCountEventArgs> ListCountChanged;

    public new int Count
    {
        get
        {
            ListCountChanged?.Invoke(this, new ChangeListCountEventArgs(base.Count));
            return base.Count;
        }
    }

    public CustomList()
    { }

    public CustomList(List<T> list) : base(list)
    { }

    public CustomList(CustomList<T> list) : base(list)
    { }
}

C) Наконец, подпишитесь на свое событие:

var myList = new CustomList<YourObject>();
myList.ListCountChanged += (obj, e) => 
{
    // get the count thanks to e.NewCount
};
1
задан forpas 11 March 2019 в 14:09
поделиться

2 ответа

SELECT M.id as match_id, M.description, Q.id as ques_id, Q.id_match, Q.question FROM matches M LEFT JOIN questions Q ON matches.id = questions.id_match

Вы можете перебирать курсор следующим образом:

    while (cursor.moveToNext()) {
        String match_id = cursor.getString(cursor.getColumnIndex("match_id"));
        String description = cursor.getString(cursor.getColumnIndex("description"));
        String ques_id= cursor.getString(cursor.getColumnIndex("ques_id"));
        String id_match= cursor.getString(cursor.getColumnIndex("id_match"));
    }
0
ответ дан 3iL 11 March 2019 в 14:09
поделиться

Этот запрос:

SELECT * FROM matches LEFT JOIN questions ON matches.id = questions.id_match

выберет 5 столбцов и 2 из них имеют одинаковые имена: id.
Я считаю, что лучше изменить запрос следующим образом:

SELECT m.id mid, m.description, q.id qid, q.id_match, q.question 
FROM matches m LEFT JOIN questions q ON m.id = q.id_match 

Так что имена столбцов разные.
Теперь после того, как вы выполните:

Cursor cursor = db.rawQuery(query, null);

у вас есть объект Cursor, содержащий все строки, извлеченные вышеупомянутым запросом.
Вам нужен цикл для доступа к значениям каждого столбца каждой строки:

while (cursor.moveToNext()) {
    String mid = cursor.getString(cursor.getColumnIndex("mid"));
    String description = cursor.getString(cursor.getColumnIndex("description"));
    String qid = cursor.getString(cursor.getColumnIndex("qid"));
    String id_match = cursor.getString(cursor.getColumnIndex("id_match"));
    String question = cursor.getString(cursor.getColumnIndex("question"));
    // here write your code
}

Если mid, qid и id_match не строки, а целые числа, замените их на getInt() вместо [ 1110].

0
ответ дан forpas 11 March 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: