2016-05-04 12 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; 
     } 

私はデバイスでテストしましたが、AddRangeでnull例外が発生しました。 AddItemsにAddMoreListを置き換えると、appが実行されます。addRange()to listview 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(); 

答えて

1

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; 
    } 

    ... 
} 

あなたがトラックの予め充填されたリストを使用して、アダプタを初期化してそれを公開しその方法プロパティを操作することができます。

//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

最初に_tracksを初期化する必要があります。私はそれを次の方法を行うことをお勧めしますあなたのアダプターへの最初の貢献者として

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

ただし、古いデータが失われ、新しいリストデータが追加されます。私はより多くのデータを追加したい –

関連する問題