2016-07-05 7 views
0

Ich suche eine ListView in Android zu verwenden, um Details von Kunden angezeigt werden, zum Beispiel Vorname, Nachname, Adresse etc ...laden Objekte in eine Listview in Android (C#)

Ich habe ein Objekt erklärt, dass sieht aus wie;

public class CustomerModel 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public string Netname { get; set; } 
    public string Initials { get; set; } 
} 

Ich habe für Beispiele suchen (Xamarin example) für eine Sammlung in C#/Android binden an ein ListView, die Benutzer in der Lage sind, klicken auf weiter detaisl zu sehen in Bezug auf die Customer aber bisher habe ich habe kein Glück.

In meiner C# -Anwendung habe ich ObservableCollection und DataGrid verwendet, aber ich habe Mühe, eine funktionsfähige Entsprechung in Android zu finden (ich bin komplett neu bei Android).

Gibt es ein Äquivalent, das ich in meiner Android App verwenden kann?

Antwort

0

Sie müssen einen Adapter erstellen, der BaseAdapter erweitert, um die Daten zu speichern, und gibt jede Zeile mit der getView-Methode zurück, in der Sie jeden Wert Ihrer Liste an eine Ansicht auf Ihrem Bildschirm binden. Beispiel aus Here:

listView = FindViewById<ListView>(Resource.Id.List); // get reference to the ListView in the layout 
// populate the listview with data 
listView.Adapter = new HomeScreenAdapter(this, tableItems); 
listView.ItemClick += OnListItemClick; // to be defined 

Adapter Klasse:

public class HomeScreenAdapter : BaseAdapter<TableItem> 
{ 
    List<TableItem> items; 
    Activity context; 
    public HomeScreenAdapter(Activity context, List<TableItem> items) 
     : base() 
    { 
     this.context = context; 
     this.items = items; 
    } 
    public override long GetItemId(int position) 
    { 
     return position; 
    } 
    public override TableItem this[int position] 
    { 
     get { return items[position]; } 
    } 
    public override int Count 
    { 
     get { return items.Count; } 
    } 
    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     var item = items[position]; 
     View view = convertView; 
     if (view == null) // no view to re-use, create new 
      view = context.LayoutInflater.Inflate(Resource.Layout.CustomView, null); 
     view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Heading; 
     view.FindViewById<TextView>(Resource.Id.Text2).Text = item.SubHeading; 
     view.FindViewById<ImageView>(Resource.Id.Image).SetImageResource(item.ImageResourceId); 
     return view; 
    } 
} 

Für Leistungsverbesserungen, einen Blick auf ViewHolder

+0

I 'C#' in meiner Frage mit Tags versehen haben - tun Sie haben ein Beispiel für C# anstelle von 'Java'? – CBreeze

+0

@CBreeze mit C# Beispiel aktualisiert. Es ist das gleiche, aber mit C# -Syntax. – user3185569

+0

Ich weiß das wirklich zu schätzen. Der einzige Teil, den ich nicht verstehen kann, ist 'Layout.CustomView'. Muss ich eine XML-Datei erstellen, die eine Zeile simuliert? – CBreeze