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

سوال فنی در مورد tablayout و فرگمنت

کوثر  9 سال پیش  9 سال پیش
0 0

دوستان خسته نباشین .یه مشکل اساسی دارم خیلی ساده و مختصر توضیح میدم اگ راهنمایی کنید ممنون میشم.ببینید من یه تب پیج دارم ک تعداد گزینه هاش داینامیک هست .و تعداد فرگمنت های ویوپیجر هم داینامیک هست به اندازه سایز یک ارایه که از سمت سرور دریافت میشه.به هر کدوم از این ایتم های تب پیج یک ایدی اختصاص دادم ک میخوام با عوض شدن این تب ها این ایدی مجدد سمت سرور بره و اطلاعات مربوطه دریافت شود و در فرگمنت ProductCardFragmment نمایش داده شود.اما مشکلی که دارم این هست که با تعویض تب پیج تا زمانی که ایدی ارسال میشه و اطلاعات دریافت میشه اون فرگمنت داخلی  (ProductCardFragmment )دیگ بارگذاری شده و اطلاعات دریافتی دیگ نمایش داده نمیشود.این وسط نمیدونم چطور باید هندل کنم ک بعد از تعویض تب پیج و دریافت اطلاعات ، فرگمنت مربوط به ویوپیجر مقداردهی شود یا اینکه دوباره رفرش شود!!!!کاری که همه برنامه ها مثل بازار و دیجی  کالا و ....

public class TabLayouteCategoryFragment extends Fragment implements View.OnClickListener{
    public static ArrayList<Category> res = new ArrayList<>();
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.tab, container, false);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout);
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
                long iddd = adapter.getItemId(tab.getPosition());
                id = res.get((int) iddd).getId();
                positionToGetFiltering = tab.getPosition();

  ActionProduct actionProduct = new ActionProduct(getActivity(), String.valueOf(id));   //resProduct   از اینجا مقداردهی میشود
                actionProduct.getResult();

            }
              return rootView;
    }
private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
        for (int i = 0; i < res.size(); i++) {
            adapter.addFrag(new ProductCardFragmment(), res.get(i).getName(), res.get(i).getId());
        }
        viewPager.setAdapter(adapter);
}
}
////////////
ProductCardFragmment extends Fragment {
    public static ArrayList<Product> resProduct=new ArrayList<>() ;
    public ListGoodsAdapter adapter;
    RecyclerView recyclerView;
    public static ArrayList<Product> res=new ArrayList<>() ;
    public ListGoodsAdapter adapter;
    RecyclerView recyclerView;
 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_category, container, false);
        recyclerView = (RecyclerView) rootView.findViewById(R.id.recycler_view_card);
        adapter= new ListGoodsAdapter(getContext(), resProduct);
        recyclerView.setAdapter(adapter);
        return rootView;
    }
}

انجام دادن

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
wolfOfAppStreet  9 سال پیش
0 0

با سلام

اول از همه اینکه زمانی که اطلاعات در حال گرفته شدن از سرور هستن از کلاس Asynk Task استفاده کنید که بعد از گرفتن کامل اطلاعات از سرور کاری که میخاید رو انجام بده

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


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