2015-02-12 4 views
0

Я пытаюсь прочитать содержимое из SQL-запроса и сохранить их в listView (Android-C#). По какой-то причине listView показывает только последний элемент. Когда я отлаживаю код, я вижу, что он проходит каждый результат, однако я не могу заставить адаптер отображать все результаты. Возможно, я делаю что-то неправильно с адаптером. Есть идеи?CSharp Android Xamarin SQL ListView

Код:

while (rdr.Read()) { 

        string[] Text = new string[] { (rdr[0])+ System.Environment.NewLine} ; 
        ListView mylistview = FindViewById<ListView> (Resource.Id.listView1); 
        var myAdapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1 , Text); 
        mylistview.Adapter = myAdapter; 
         } 

ответ

1

По какой-то причине ListView только показывает последний элемент.

Поскольку в while создается каждый раз, когда новый Text массив и перейти к ArrayAdapter так последний является массив данных показывает в ListView.

Чтобы показать все элементы в ListView, создавать объект адаптера за пределами while цикла и использовать ArrayList, которые будут расти в соответствии с данными размера:

ArrayList listText = new ArrayList(); 
while (rdr.Read()) { 
    listText.add((rdr[0])+ System.Environment.NewLine); 
} 
ListView mylistview = FindViewById<ListView> (Resource.Id.listView1); 
var myAdapter = new ArrayAdapter(this, 
           Android.Resource.Layout.SimpleListItem1,listText); 
mylistview.Adapter = myAdapter; 
+0

Спасибо, я знал, что это была глупая ошибка. Кстати, мне пришлось использовать var listText = new List (); вместо ArrayList. Еще раз спасибо! – user2953714

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