如何将更多项目添加到列表视图 xamarin.android

How to add more items to listview xamarin.android

Listview 目前有 10 个 items.I 有一个按钮名称是 "load more"。当我点击它时,数据将显示 10 个项目到列表视图。

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 override TrackModel.Track this[int index]
        {
            get{ return _tracks [index]; }
        }


        public override int Count{
            get{ return _tracks.Count; }
        }

        public override long GetItemId(int position)
        {
            return position;
        }

        public override View GetView(int position, View convertView,ViewGroup parent)
        {
            View view = convertView ?? _inflater.Inflate (Resource.Layout.textViewItems, parent, false);

            var track = _tracks [position];
            var viewHolder = view.Tag as TrackViewHolder;
            if (viewHolder == null) {
                viewHolder = new TrackViewHolder ();
                viewHolder.Title = view.FindViewById<TextView> (Resource.Id.textviewItems);
                viewHolder.SubTitle = view.FindViewById<TextView> (Resource.Id.textviewSubItem);
                viewHolder.Image = view.FindViewById<ImageViewAsync> (Resource.Id.image);
                viewHolder.ImgIcon = view.FindViewById<ImageView> (Resource.Id.imgIconPlay);
                viewHolder.PlayingCount = view.FindViewById<TextView> (Resource.Id.textviewPlayingCount);
                view.Tag = viewHolder;
            } else
                viewHolder = (TrackViewHolder)view.Tag as TrackViewHolder; 

            viewHolder.Title.Text = track.title;
            viewHolder.PlayingCount.Text = track.playback_count.ToString ();
            viewHolder.ImgIcon.SetImageResource (Resource.Drawable.HeadsetFilled);

            if (!string.IsNullOrEmpty(track.user.full_name)) {
                viewHolder.SubTitle.Text = track.user.full_name;
            } else {
                viewHolder.SubTitle.Text = "Unknown";
            }

            //Android.Net.Uri uri = Android.Net.Uri.Parse ("/Resources/drawable/soundcloud.png");
            //Bitmap bitmap=GetBitmapFromUrl(track.artwork_url);
            if (track.artwork_url != null) {
                ImageService.LoadUrl(track.artwork_url)

                    .Retry(5, 200)
                    .Into(viewHolder.Image);
            } else {
                ImageService.LoadUrl("http://a4.mzstatic.com/us/r30/Purple49/v4/4c/ca/2b/4cca2bb3-8180-5c28-6632-a4d9cde8752c/icon100x100.png")

                    .Retry(5, 200)
                    .Into(viewHolder.Image);
            }



            return view;
        }




    }

lst = View.FindViewById<ListView> (Resource.Id.lstHome);

            var result = await json.GetStringbyJson (...offset=20);


            if (result != null)
            {
                items = Newtonsoft.Json.JsonConvert.DeserializeObject<TrackModel.RootObject> (result);

                lst.Adapter = new TrackAdapter(Activity, items.tracks);
            }

加载更多:

public  async void loadMoreData(int off)
        {
            var result= await json.GetStringbyJson("...offset=30);
            if (result != null) {
                items = Newtonsoft.Json.JsonConvert.DeserializeObject<TrackModel.RootObject> (result);
                foreach (var temp in items.tracks) {
                    //lst.Adapter=;
                }
                //lst.Adapter = new TrackAdapter (Activity, items.tracks);
            }
        }

如何将loadMoreData中的items.tracks添加到listview中,这样listview不会丢失旧数据。

您需要将项目添加到 foreach 中的 Adapter:

lst.Adapter.Add(temp);

之后,刷新适配器:

lst.Adapter.NotifyDataSetChanged();