نمایش current Page بصورت رندوم در درخواست JSON
سلام
در برنامه یک لیست ویو همراه با Load More قرار داره که یه سری اطلاعات رو بصورت JSON از سرور میگره.
همه چی درست کار میکنه، ولی وقتی برنامه با دکمه Back یا Finish بسته میشه، و دوباره برنامه رو اجرا میکنم، current Page که بصورت پیشرض یک هستش، یک عدد رَندوم میگره و باعث میشه هیچ اطلاعاتی از سرور خونده نشه...
حالا من توش موندم چرا این current Page وقتی برنامه دوباره اجرا میشه یک نیستش :|
حتی من توی خود onCreate هم current Page رو برابر یک قرار دادم که هربار برنامه از صفر شروع میشه، current Page برابر یک باشه ولی هیچ...
و همچنین به برنامه گفتم وقتی بسته میشه، current Page رو برابر با یک کن و باز هم هیچ ... :|
مٌردم از بس تست زدم :|
ممنون
--------------
ویرایش:
هربار که Load More اجرا میشه این current_page در doInBackground یکی اضافه میشه (CurrentPage++) که در درخواست بعدی صفحه بعد رو از سرور بگیره .
من حدس میزنم، این عدد بزرگی که به CurrentPAge اختصاص داده میشه بخاطر اینه که doInBackGround خیلی اجرا میشه و درصورتی که باید به تعداد، تعداد مطالب تقسیم بر 10 اجرا بشه...
احمد جان، من به لیست ویو گفتم وقتی اسکرول به 3تا مونده به آخر رسید، متود doInBackgound اجرا بشه تا لیست ویو آیتم های جدید رو بگیره. خب تا اینجاش هیچ مشکلی ندارم و برنامه بخوبی کار میکنه.
حالا اگه یک هدر به این لیست ویو اضافه کنم، شرط هایی که داخل setOnScrollListener قرار دادم کلآ بی تاثیر میشه. (دقیقآ وقتی این هدر اضافه بهشه) .
از این کدها دارم استفاده میکنم:
listView.addHeaderView(headerView); //یک ویو به لیست ویو اضافه میکنم
listView.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
int lastItem = firstVisibleItem + visibleItemCount;
if (adapter.getCount() >= 10 && lastItem > adapter.getCount() - 3) {
boolean isLoading = false;
if (!isLoading) {
if(lastItem > lastItemPosition){
lastItemPosition = adapter.getCount();
Log.i("Url3",url);
new loadMoreListView().execute();
}
isLoading = true;
}
}
}
});
مشکل از چیه ؟
نمی دانم ایراد از این باشد یا نه ولی یک جای کدی که شما نوشته اید کاملا بی استفاده است شما متغیر isloading را false قرار داده اید بعد شرط if را طوری قرار داده اید که با توجه به false بودن این متغیر همیشه نتیجه شرط true خواهد بود. این جایی که شما این متغیر را تعریف کرده اید اشتباه است.
پیشنهاد می کنم این متغیر را در بالای همه متد ها به عنوان یک فیلد تعریف کنید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .