2016-05-04 14 views
-1
public class TrackAdapter:BaseAdapter<TrackModel.Track> 
    { 
     LayoutInflater _inflater; 
     List<TrackModel.Track> _tracks; 

     public TrackAdapter(Context context)//, List<TrackModel.Track> tracks 
     { 
      _inflater=LayoutInflater.FromContext(context); 
      //_tracks=tracks; 
     } 

     public void AddMoreList(List<TrackModel.Track> tracks) 
     { 
      _tracks.AddRange(tracks); 
     } 
     public void AddItems(List<TrackModel.Track> tracks) 
     { 
      _tracks = tracks; 
     } 

Ich habe auf Gerät getestet, aber ich habe null Ausnahme bei AddRange. Wenn ich AddMoreList in AddItems ersetze, wird die App ausgeführt.kann nicht hinzugefügt werdenRange() zur Listenansicht xamarin.android

items = Newtonsoft.Json.JsonConvert.DeserializeObject<TrackModel.RootObject> (result); 
      TrackAdapter tAdapter = new TrackAdapter (this.Activity); 
      tAdapter.AddMoreList (items.tracks); 
      lst.Adapter = tAdapter; 
      tAdapter.NotifyDataSetChanged(); 

Antwort

1

Als erster Beitrag zu Ihrem Adapter würde ich empfehlen es die folgende Art und Weise zu tun:

public class TrackAdapter:BaseAdapter<TrackModel.Track> 
{ 
    LayoutInflater _inflater; 

    public List<TrackModel.Track> Tracks {get; set;} 

    public TrackAdapter(Context context, List<TrackModel.Track> tracks) 
    { 
     _inflater = LayoutInflater.FromContext(context); 
     Tracks = tracks; 
    } 

    ... 
} 

diese Weise können Sie Ihren Adapter mit einer vorgefüllten Liste der Tracks initialisieren und freilegen, dass als Eigenschaft, die Sie bearbeiten können.

//Initial filled list 
TrackAdapter tAdapter = new TrackAdapter (this.Activity, items.tracks); 
... 
//later in the code where you need to add or remove items 
var adapter = lst.Adapter as TrackAdapter; 

//add a single track 
adapter.Tracks.Add(track); 

//add multiple tracks 
adapter.Tracks.AddRange(tracks); 

//remove a single track 
adapter.Tracks.Remove(track); 
1

Sie müssen _tracks zuerst initialisieren.

_tracks = new List<Track>(); 
+0

aber es wird alte Daten verloren und neue Listendaten hinzufügen. Ich möchte mehr Daten hinzufügen –

Verwandte Themen