Hallo zusammen.
Ich versuche, Daten von einem externen MS-SQL-Server auf einer App darzustellen (Xamarin.Android). Dazu habe ich im .xaml-File folgenden ListView
eingefügt:
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView3" />
Die Aktivität hierzu sieht folgendermaßen aus:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.layout1);
var lv = FindViewById<ListView>(Resource.Id.listView3);
lv.Adapter = new ArrayAdapter<Item>(this, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1, BaseData.GetEmployees());
lv.ItemClick += OnItemClick;
}
void OnItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
int position = e.Position; // e.Position is the position in the list of the item the user touched
var intent = new Intent(this, typeof(DetailsActivity));
intent.PutExtra("ItemPosition", position);
StartActivity(intent);
}
und die get-Methode:
public static List<String> GetEmployees()
{
List<String> list = new List<String>();
string sql = "SELECT adrsuche1 FROM adressen";
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(sql, con))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
list.Add(reader.GetString(0));
}
}
}
con.Close();
return list;
}
}
Die Spalte in der Datenbank, die mit dem SQL-Befehl anzusprechen versucht wird, enthält einfache strings.
Leider unterringelt er mir BaseData.GetEmployees()
(Activity Zeile 8 ) und ich erhalte folgende Fehlermeldung:
Fehlermeldung:
Konvertierung von "System.Collections.Generic.List<string>" in "GroceryList.Item[]" nicht möglich.
Kann mir jemand vielleicht sagen, was das Problem ist und wie ich das lösen kann, sodass die Daten von der Datenbank korrekt angezeigt werden?
Vielen Dank schonmal,
Beste Grüße
Naja, Du hast zwei völlig verschiedene Typen.
Du musst halt Typen verwenden, die identisch sind oder entsprechend konvertieren.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Vielen Dank für die schnelle Antwort.
Blöd gefragt, aber wie mach ich das? Sorry, bin absoulter Anfänger, was Programmierung angeht 😦
Da würde es helfen, wenn Du einfach mal ein entsprechendes Tutorial durcharbeitest.
Ohne Grundlagen wirst Du ständig von Problem zu Problem stolpern.
Ich kann mir nicht vorstellen, dass new ArrayAdapter<Item>
eben mit der Rückgabe von BaseData.GetEmployees()
zu recht kommt.
Also musst Du entweder den Adapter anpassen und Deinen gewünschten Typ übergeben oder dessen Inhalt.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code