مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

sharifi77

عضویت از 1395/05/02

دریافت اطلاعات از Web Api و نمایش در ListView با متد ScrollStateChanged

  • دوشنبه 19 تیر 1396
  • 13:12
تشکر میکنم

با سلام. یه برنامه دارم که اطلاعات رو از سرویس Web Api میخونه و داخل listview نمایش میده.اما به دلیل تعداد بالای رکورد اطلاعات میخوام دیتا به صورت پارت به پارت خوانده بشه و به لیست اضافه بشه.به عنوان مثال توی هر بار فرخوانی 10 رکورد اطلاعات بخونه و به لیست اضافه کنه بدون اینکه رکوردهای قبلی از بین بره و با اسکرول کردن بشه کل لیست رو مشاهده کرد.تشکر

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 19 تیر 1396
  • 17:25

شما باید دیتا را صفحه بندی کنید

برای ایده گرفتن و نمونه میتونید لینک زیر رو ببینید

آموزش تصویری ساخت صفحه بندی (Pagging) سفارشی در MVC

به کد ها دقت کنید در Api باید اینگونه عمل کنید

کاربر سایت

sharifi77

عضویت از 1395/05/02

  • سه شنبه 20 تیر 1396
  • 10:59

ضمن تشکر از راهنمایی شما.برنامه تا حدود زیادی اوکی شد.تنها مشکل این است که در زمان فراخوانی رویداد  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);
              
              
            }
        }

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 20 تیر 1396
  • 11:13

این مشکل را باید در Adapter کنترل کنید

به احتمال زیاد Convert View  را کنترل نکردید یا در اون قسمت داره override میشه

کاربر سایت

sharifi77

عضویت از 1395/05/02

  • سه شنبه 20 تیر 1396
  • 11:18

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

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 20 تیر 1396
  • 13:01

این لینک رو ببینید

این لینک هم نمونه هست

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)