Laden...

Konvertierung von "System.Collections.Generic.List<string>" in "[namespace].Item[]" nicht möglich.

Erstellt von TBMSam vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.762 Views
T
TBMSam Themenstarter:in
9 Beiträge seit 2018
vor 5 Jahren
Konvertierung von "System.Collections.Generic.List<string>" in "[namespace].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:

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

16.806 Beiträge seit 2008
vor 5 Jahren

Naja, Du hast zwei völlig verschiedene Typen.
Du musst halt Typen verwenden, die identisch sind oder entsprechend konvertieren.

T
TBMSam Themenstarter:in
9 Beiträge seit 2018
vor 5 Jahren

Vielen Dank für die schnelle Antwort.

Blöd gefragt, aber wie mach ich das? Sorry, bin absoulter Anfänger, was Programmierung angeht 😦

16.806 Beiträge seit 2008
vor 5 Jahren

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.