Konvertierung von "System.Collections.Generic.List<string>" in "GroceryList.Item[]" nicht möglich.
-
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: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
-
Du willst eine Liste einem Array-Parameter übergeben. Du musst zuerst die Liste in ein Array umwandeln. Dazu bietet
List<T>
die Methode ToArray an. Allerdings hast du dann noch das Problem, dass du ein String-Array einem Item-Array übergeben möchtest. Keine Ahnung was diese Item-Klasse genau soll. Oder sollte womöglich dort stattArrayAdaptery<Item>
eherArrayAdapter<String>
stehen?Aber mal ehrlich, hol nochmal das Grundlagenbuch/Tutorial/was auch immer zu C# raus. Das sind absolute Grundlagen. Les dir nochmal die Sektion über Typen durch.
-
Hm habe jetzt die entsprechende Zeile in
lv.Adapter = new ArrayAdapter<String>(this, Android.Resource.Layout.SimpleListItem1, Android.Resource.Id.Text1, BaseData.GetEmployees().ToArray());
geändert, jetzt sagt er mir:
Konvertierung von "string[]" in "GroceryList.String[]" nicht möglich.
Sorry für diese Grundlagen-Fragen, bin leider absoluter Anfänger, was Programmieren angeht
-
@tbmsam sagte
Sorry für diese Grundlagen-Fragen, bin leider absoluter Anfänger, was Programmieren angeht
Wieso beschäftigst du dich dann bereits mit Xamarin? Lern doch zuerst mal die Grundlagen, bevor du dich mit fortgeschritteneren Themen auseinander setzt.
Bezüglich der Fehlermeldung. Das klingt als käme ein eigener String Datentyp zum Einsatz im Namensraum
GroceryList
? Ist das eine Übungsaufgabe?
-
Äh naja, ich beschäftige mich mit Xamarin, da ich von meinem Arbeitgeber den Auftrag habe, eine spezielle Android-App mit Hilfe von Microsoft Visual Studio 2017 zu erstellen.
Was meinst du mit "klingt als käme ein eigener String Datentyp zum Einsatz"?^^
Ich versuche, die App, die ich über das Tutorial "https://university.xamarin.com/classes/track/xamarin-android#and102-activities-intents" erstellt habe, zu modifizieren und an die Infrastruktur meines Arbeitgebers anzupassen (speziell wie geschrieben Daten einer externen MS-SQL-Server 2012-Datenbank auszulesen und anzuzeigen).
-
Dann entferne mal das
ToArray()
wieder.
Und finde mal raus, wasGroceryList.String
ist.Ich muß aber @Dravere zustimmen: Du solltest erst die Grundlagen von C# (z.B. anhand einer Konsolen-Anwendung) lernen, bevor du dich mit Xamarin beschäftigst.
-
Habe mein ganzes Projekt jetzt durchforstet, aber konnte leider nirgends
GroceryList.string
finden.Habe in meinem Studium Java gehabt und über Tutorials bereits eine Konsolen-Anwendung geschrieben, in der der Datenbankzugriff sowie das Darstellen der Daten wunderbar funktioniert hat:
static void Main(string[] args) { SqlConnection connection = new SqlConnection("Server=.\[servername];Database=[dbname];User Id=[userid];Password=[password];"); connection.Open(); SqlCommand cmd = new SqlCommand("SELECT adrsuche1 FROM [dbo].[Adressen]", connection); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Console.WriteLine("{0}",reader.GetString(0)); } reader.Close(); connection.Close(); if (Debugger.IsAttached) { Console.ReadLine(); }
Nur krieg ich den Transfer nicht ganz hin. Leider gibt es beispielsweise die Funktion
Console.WriteLine()
in einer App bzw. bei Xamarin nicht, daher nach einiger Recherche / diversen anderen Versuchen der Versuch jetzt mit demListView
- Element.