2016-07-30 75 views
0

你好,我已經創建了一個自定義列表視圖。現在我想在每個項目中添加來自sql的數據。我在mainactivity原代碼是這樣的:自定義列表視圖從數據添加數據

mlistview = FindViewById<ListView>(Resource.Id.myListView); 
mItems = new List<Person>(); 
mItems.Add(new Person() { FirstName = "Dim", LastName = "Chris", Age = "25", Gender = "Male" }); 

MyListViewAdapter adapter = new MyListViewAdapter(this, mItems); 
mlistview.Adapter = adapter; 

現在,我想在我的每一個項目添加從sql.I數據嘗試這樣的事:

mlistview = FindViewById<ListView>(Resource.Id.myListView); 


SqlCommand sqlCmd = new SqlCommand("SELECT Name,LastName,Age,Gender FROM Members", con); 
SqlDataReader sqlReader = sqlCmd.ExecuteReader(); 
while (sqlReader.Read()) 
{  


mItems = new List<Person>(); 
mItems.Add(new Person() { FirstName = sqlReader["Name"].ToString(), LastName = sqlReader["LastName"].ToString(), Age = sqlReader["Age"].ToString(), Gender = sqlReader["Gender"].ToString() }); 

MyListViewAdapter adapter = new MyListViewAdapter(this, mItems); 
mlistview.Adapter = adapter; 
} 
sqlReader.Close(); 

我只能看到我的最後一個SQL行。但我想看到我所有的SQL行。

回答

0

您正在爲創建MyListViewAdapter的實例,每個行都來自查詢。每個ListView只需要一個適配器實例。

所以,更換此

while (sqlReader.Read()) 
{  
    mItems = new List<Person>(); 
    mItems.Add(new Person() { FirstName = sqlReader["Name"].ToString(), LastName = sqlReader["LastName"].ToString(), Age = sqlReader["Age"].ToString(), Gender = sqlReader["Gender"].ToString() }); 

    MyListViewAdapter adapter = new MyListViewAdapter(this, mItems); 
    mlistview.Adapter = adapter; 
} 

// List of persons 
mItems = new List<Person>(); 

// Add persons from the query to our list 
while (sqlReader.Read()) 
{  
    mItems.Add(new Person() { FirstName = sqlReader["Name"].ToString(), LastName = sqlReader["LastName"].ToString(), Age = sqlReader["Age"].ToString(), Gender = sqlReader["Gender"].ToString() }); 
} 

// Create an adapter for this list 
MyListViewAdapter adapter = new MyListViewAdapter(this, mItems); 

// Bind the ListView to this adapter 
mlistview.Adapter = adapter; 
+0

謝謝你的工作! – DiH

相關問題