آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل با اسکرول لیست ویو در ویو پیجر

میلاد  11 سال پیش  11 سال پیش
+1 0

سلام

یه برنامه نوشتم که اکتیویتی اصلیم extends ActionBarActivity هستش توش یه ویو پیجر معرفی کردم و تعدادی صفحه ساختم و توی هر صفحه یک لیست ویو قرار دادم و این لیست ویو ها باید مقداری که در دیتا بیس ذخیره کردم نشان بدن

که برنامه مشکلی نداره و اجرا میشه لیست ویو ها هم پر میشن ولی وقتی اسکرول میکنیم اگه صفحه بعد تعداد الواراش کمتر باشه ارور میده کدشم میزارم که لطف کنین کمک کنین

مقادیری که تو دیتابیس ذخیره شدن

            databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axshasani')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axsrezaii')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axsrezaii')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axsrezaii')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axsrezaii')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('1','hasani','axsrezaii')");
//که 1 باشه 6 تاهستش idgroh تعداد
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('2','ariyan','axsariyan')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('2','ariyan','axsariyan')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('2','ariyan','axsariyan')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('2','ariyan','axsariyan')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('2','ariyan','axsariyan')");
//که 1 باشه 5 تاهستش idgroh تعداد
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsrazi')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('3','razi','axsvaliasr')");
//که 1 باشه 6 تاهستش idgroh تعداد
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
databasedoktor.execSQL("INSERT INTO zirgoroh (idgroh,name,axs) VALUES ('4','valiasr','axsvaliasr')");
//که 1 باشه 6 تاهستش idgroh تعداد

کلاس PagerAdapter

 public class PagerAdapter extends FragmentPagerAdapter {

private Context context;
public ArrayList<String> gorohname = new ArrayList<String>();//تعداد 5 اسم توش ذخیده هستش
public ArrayList<Integer> gorohid = new ArrayList<Integer>();//تعداد 5 عدد به ترتیب 0 تا 4 توش ذخیده هستش
public static ViewGroup container2;


public PagerAdapter(MainActivity mainActivity, FragmentManager fm, ArrayList<String> gorohname, ArrayList<Integer> gorohid) {
super(fm);
// this.context = runnable;
this.gorohname = gorohname;
this.gorohid = gorohid;
}


@Override
public CharSequence getPageTitle(int position) {
while (position < gorohname.size()) {
if (position == 0) {
return "خانه";

} else if (position > 0) {
return gorohname.get(position);
}
}
return null;

}


@Override
public Fragment getItem(int position) {

switch (position) {
case 0:
return new Fragmenthome();

default:
return Fragmentlist.Instance(gorohid.get(position));

}

}


@Override
public int getCount() {
return gorohname.size();
}
}

اینم کلاس Fragmentlist که لیست ویو توش پر میشه

 public class Fragmentlist extends Fragment {

public ViewGroup layout;
public static ArrayAdapter adabter;
public String result; ;



public static Fragment Instance(int catID) {
Fragment fragment = new Fragmentlist();
Bundle data = new Bundle();
data.putInt("catID", catID);
fragment.setArguments(data);

return fragment;
}

ListView list;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

layout = (ViewGroup) inflater.inflate(R.layout.fragment_list1, null);

return layout;

}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

G.notes.clear();
Cursor cursore = G.databasedoktor.rawQuery("SELECT * FROM zirgoroh WHERE idgroh=" + getArguments().getInt("catID"), null);

while (cursore.moveToNext()) {

StructNote note = new StructNote();
note.viewmahsolProductId = cursore.getInt(cursore.getColumnIndex("id"));
note.viewmahsolProductGroupId = cursore.getInt(cursore.getColumnIndex("idgroh"));
note.viewmahsolProductTitle = cursore.getString(cursore.getColumnIndex("name"));
note.viewmahsolpic = cursore.getString(cursore.getColumnIndex("axs"));
G.notes.add(note);

}
cursore.close();

list = (ListView) layout.findViewById(R.id.listView1);
adabter = new AdapterNote(G.notes);
list.setAdapter(adabter);
adabter.notifyDataSetChanged();
}
}

بعد از اجرا برنامه 5 صفحه داریم که صفحه اول از Fragmenthome باید پر بشه که فعلا مقداری نداره و خالی میاد صفحه دوم اونایی که idgroh برابر 1 هست نشون میده صفحه سوم اونایی که idgroh برابر 2 هست و الا آخر

هنگامی که اجرا میشه وقتی که میخواهیم از صفحه اول به سمت صفحه آخر بریم در صفحه دوم که اکرول میکنیم چون صفحه سوم ما تعداد الوارهاش یکی کمتر هستش ارور میده که اینم ارورش

  java.lang.IndexOutOfBoundsException: Invalid index 5, size is 5

ولی وقتی از آخر به اول بیایم ارور نمیده

لطفا اگه کسی میدونه مشکل کجاست راهنمایی کنه مرسی

 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .