Если 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
};
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"));
}
Этот запрос:
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].