PDA

View Full Version : تغيير اطلاعات در viewpager



reza_web
دوشنبه 03 آبان 1395, 11:24 صبح
سلام
من در يك اكتيويتي از يك viewpager استفاده مي كنم كه بدين صورت پر مي شود:




List<Fragment> fList1 = new ArrayList<Fragment>();
fList1.add(MyFragment.newInstance("lllleeell",button2Text,button3Text,button4Text,button5Text , "eeee");

fList1.add(MyFragment.newInstance(" هفت**ه اول "," هفته دوم "," هفته سوم "," هفته چهارم "," هفته پنجم ", "WEEK"));
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fList1);
pager.setAdapter(pageAdapter);



در كدي كه براي MyFragment هم نوشتم اطلاعات بدرستي نمايش داده ميشه

ولي مكشل اينه كه كاربر با زدن دكنه اي بايد محتواي اين دو page تغيير كنه كه هرررر كاري ميكنم تغيير نميكنه
حتي همه كد ساخت viewpager را هم داخل آن كليك دكمه گذاشتم باز هم همان مقدار دفعه اول را نمايش ميده
واقعا به كمك نياز دارم
كسي ميتونه راهنمايي كنه؟

tux-world
دوشنبه 03 آبان 1395, 20:24 عصر
شما باید برای اینکار از listener استفاده کنید. بهتره eventBus رو سرچ کنید ببینید کارش چیه.

reza_web
دوشنبه 03 آبان 1395, 23:28 عصر
کلا سوالمو ظاهرا اشتباه پرسیدم
ببینید در کد زیر viewpager مقدار دهی میشه و نمایش داده میشه


final List<Fragment> fList = new ArrayList<>();
fList.add(MyFragment.newInstance(button1Text,butto n2Text,button3Text,button4Text,button5Text , TarikhText1));
fList.add(MyFragment.newInstance(" هفته اول "," هفته دوم "," هفته سوم "," هفته چهارم "," هفته پنجم ", "WEEK"));
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fList);
final ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);

دو تا فرگمنت هم مقدار دهی شده
جالا با کد زیر می خواهم محتوای فرگمنت ها تغییر کنه:



gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {

fList.clear();
pager.getAdapter().notifyDataSetChanged();
fList.add(MyFragment.newInstance(button1Text,butto n2Text,button3Text,button4Text,button5Text , String.valueOf(position)));
fList.add(MyFragment.newInstance(" هفته ***اول "," هفته دوم "," هفته سوم "," هفته چهارم "," هفته پنجم ", "WEEK"));
pager.getAdapter().notifyDataSetChanged();

}
});

ولی مقادیر داخل fList اصلا عوض نمیشه و همون قبلیها باقی می ماند

tux-world
سه شنبه 04 آبان 1395, 08:00 صبح
پستتون رو خودتون خوندید؟ من که هیچچی نمیتون بخونم متن رو از اندروید استودیو اینجا کپی نکنید ببرید تو gedit یا یه جایی که فرمتش پاک شه

reza_web
سه شنبه 04 آبان 1395, 08:25 صبح
واي شرمنده بخدا اصلا توجه نكردم



// تعريف ليستي كه فرگمنت از ان استفاده مي كند
final List<Fragment> fList = new ArrayList<>();
// دو فرگمنت را اضافه مي كنيم
fList.add(MyFragment.newInstance(button1Text,butto n2Text,TarikhText1));
fList.add(MyFragment.newInstance(" هفته اول "," هفته دوم ", "WEEK"));
// آداپتر و پيچر را مي سازيم و مقدار مي دهيم
pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fList);
final ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pageAdapter);




اين هم رويداد كليك



gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
// ليست را پاك مي كنيم
fList.clear();
// تغييرات را به اداپتر اعلام مي كنيم
pager.getAdapter().notifyDataSetChanged();
// دو مقدار جديد به ليست مي دهيم
fList.add(MyFragment.newInstance(button1Text,butto n2Text , String.valueOf(position)));
fList.add(MyFragment.newInstance(" هفته ***اول "," هفته دوم ", "WEEK"));
// باز تغييرات را به اداپتر اعلام مي كنيم
pager.getAdapter().notifyDataSetChanged();
}
});