如何向listview xamarin.android添加更多项目

时间:2016-05-03 08:41:04

标签: xamarin xamarin.android

Listview目前有10个项目。我有一个按钮名称是“加载更多”。当我点击它时,数据将显示10个项目到列表视图。

clean_dob

LoadMore:

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

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

1 个答案:

答案 0 :(得分:0)

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

lst.Adapter.Add(temp);

之后,刷新适配器:

lst.Adapter.NotifyDataSetChanged();