با سلام. یه برنامه دارم که اطلاعات رو از سرویس Web Api میخونه و داخل listview نمایش میده.اما به دلیل تعداد بالای رکورد اطلاعات میخوام دیتا به صورت پارت به پارت خوانده بشه و به لیست اضافه بشه.به عنوان مثال توی هر بار فرخوانی 10 رکورد اطلاعات بخونه و به لیست اضافه کنه بدون اینکه رکوردهای قبلی از بین بره و با اسکرول کردن بشه کل لیست رو مشاهده کرد.تشکر
شما باید دیتا را صفحه بندی کنید
برای ایده گرفتن و نمونه میتونید لینک زیر رو ببینید
به کد ها دقت کنید در Api باید اینگونه عمل کنید
ضمن تشکر از راهنمایی شما.برنامه تا حدود زیادی اوکی شد.تنها مشکل این است که در زمان فراخوانی رویداد ScrollStateChanged ،تعداد رکورد مورد نظر دریافت و در listview نمایش داده میشود. ولی رکوردهای قبلی حذف شده و تنها آخرین رکوردهای دریافتی نمایش داده میشود به شکلی که همیشه تعداد محدودی رکورد در لیست نمایش داده میشود.نمونه کد:
async void ListView_ScrollStateChanged(object sender, AbsListView.ScrollStateChangedEventArgs e) { var last = listview.LastVisiblePosition + 1; var adapterCount = listview.Count; if (last == adapterCount) {
Toast.MakeText(this, "Load More ...", ToastLength.Long).Show();
List<Test> test = await RefreshDataAsync(adapterCount); listview.Adapter = new WebApiAdapter(this, test); } }
این مشکل را باید در Adapter کنترل کنید
به احتمال زیاد Convert View را کنترل نکردید یا در اون قسمت داره override میشه
کد View در Adapter:
public override View GetView(int position, View convertView, ViewGroup parent) { View _view = convertView; if (_view == null) { _view = _context.LayoutInflater.Inflate(Resource.Layout.ListItem, null); } Test test = _list[position]; _view.FindViewById<TextView>(Resource.Id.lblText).Text = test.name; return _view; } }
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)