Dynami c Вкладки с данными Dynami c во фрагменте окна просмотра - PullRequest
0 голосов
/ 13 февраля 2020

enter image description here Мне нужна помощь. Я разрабатываю вкладки динамических c с данными динамических c в списке фрагментов видового экрана. Каким-то образом я получил вкладки Dynami c и нажал API во фрагменте-заполнителе, чтобы получить список переработчиков. Есть два вопроса. 1. дизайн перекрывает вкладки и 2. сначала загружает данные третьего идентификатора. вот код вот основной класс

public class NewsFeed extends Fragment {

    private static RecyclerView listView;
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();
    private TabLayout tabLayout;
    private ViewPager viewPager;
    private RecyclerView recyclerView;
    private ApiInterface apiInterface;
    private List<BlogCatData> list = new ArrayList<BlogCatData>();
    private BlogCatListAdaptor adapter;
    private String item;
    private ArrayList<BlogCatData> dataModelList = new ArrayList<BlogCatData>();
    private ArrayList<String> CatTitleList = new ArrayList<>();
    private static ArrayList<String> CatIdList = new ArrayList<>();
    private View view1;
    private View v;
//    private ArrayAdapter<BlogCatData> adapter;

    public NewsFeed() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        v = inflater.inflate(R.layout.fragment_news_feed, container, false);

        getAllBlogCat();

        return v;
    }

    private void setViewIDs() {

        tabLayout = v.findViewById(R.id.tabs);
        viewPager = v.findViewById(R.id.container);
        setUpViewPager(viewPager);
        tabLayout.setupWithViewPager(viewPager);

    }

    private void getAllBlogCat() {
//        avi.show();
        apiInterface = APIClient.getClient().create(ApiInterface.class);
        Call<BlogCatModel> call = apiInterface.GETBlogCategory();
        call.enqueue(new Callback<BlogCatModel>() {
            @Override
            public void onResponse(Call<BlogCatModel> call, retrofit2.Response<BlogCatModel> response) {

                if (response.isSuccessful()) {

                    CatIdList.clear();
                    list = response.body().getDATA();

                    for (int i = 0; i < list.size(); i++) {

                        CatTitleList.add(list.get(i).getTITLE());
                        CatIdList.add(list.get(i).getID());
                    }

                    Log.v("CatTitle", CatTitleList.toString());
                    Log.v("CatId", CatIdList.toString());

                    setViewIDs();

//                    adapter.setPostList(list)


                } else {
                    try {
                        JSONObject jObjError = new JSONObject(response.errorBody().string());
                        Toast.makeText(getApplicationContext(), jObjError.getString("message"), Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
                    }
                }
            }

            @Override
            public void onFailure(Call<BlogCatModel> call, Throwable t) {
                Toast.makeText(getApplicationContext(), t.toString(), Toast.LENGTH_SHORT).show();
                call.cancel();
            }
        });
    }

    private void setUpViewPager(ViewPager viewPager) {
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(getFragmentManager());

        for (int i = 0; i < CatTitleList.size(); i++) {
            Bundle bundle = new Bundle();
            bundle.putString("id", CatIdList.get(i));
            PlaceholderFragment categoryList = new PlaceholderFragment();
            categoryList.setArguments(bundle);
            sectionsPagerAdapter.addFragment(categoryList, CatTitleList.get(i));
        }
        sectionsPagerAdapter.notifyDataSetChanged();
        viewPager.setAdapter(sectionsPagerAdapter);

    }

    public static class PlaceholderFragment extends Fragment {

        private final static String TAG = PlaceholderFragment.class.getSimpleName();
        private static String item;
        private static ArrayList<String> dataModelList = new ArrayList<String>();
        //        private ArrayAdapter<Model> adapter;
        private RecyclerView listView;
        private List<BlogData> dataList = new ArrayList<>();
        private BlogListAdaptor blogListAdaptor;
        private static String id;

        public PlaceholderFragment() {
        }

        public static PlaceholderFragment newInstance(int sectionNumber) {
            PlaceholderFragment fragment = new PlaceholderFragment();

            id = CatIdList.get(sectionNumber);
            Bundle args = new Bundle();
            args.putString("ID", id);

            fragment.setArguments(args);
            return fragment;
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment__newsfeed_placeholder, container, false);
            listView = view.findViewById(R.id.recycler_view);

            getBlog(Id);
            setBlog();

            return view;
        }


        private void getBlog(String id) {
            ApiInterface apiInterface = APIClient.getClient().create(ApiInterface.class);
            Call<BlogModel> call = apiInterface.getNewsByCategory(id);
            call.enqueue(new Callback<BlogModel>() {
                @Override
                public void onResponse(Call<BlogModel> call, retrofit2.Response<BlogModel> response) {

                    if (response.isSuccessful()) {

                        dataList = response.body().getDATA();

                        blogListAdaptor.setPostList(dataList);


                    } else {
                        try {
                            JSONObject jObjError = new JSONObject(response.errorBody().string());
                            Toast.makeText(getApplicationContext(), jObjError.getString("message"), Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    }
                }

                @Override
                public void onFailure(Call<BlogModel> call, Throwable t) {
                    Toast.makeText(getApplicationContext(), t.toString(), Toast.LENGTH_SHORT).show();
                    call.cancel();
                }
            });
        }


    private void setBlog() {
        blogListAdaptor = new BlogListAdaptor(getActivity(), dataList);
        listView.setAdapter(blogListAdaptor);
        listView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        listView.setLayoutManager(linearLayoutManager);

}

    }

    public class SectionsPagerAdapter extends FragmentPagerAdapter {


        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {

            return PlaceholderFragment.newInstance(position + 0);
        }

        public void addFragment(Fragment fragment, String title) {

            mFragmentList.add(fragment);

            mFragmentTitleList.add(title);
        }

        @Override
        public int getCount() {

            return mFragmentTitleList.size();
        }

        @Override
        public CharSequence getPageTitle(int position) {

            switch (position) {

            }
            return mFragmentTitleList.get(position);
        }

        @Override
        public int getItemPosition(Object object) {
            return super.getItemPosition(object);
        }
    }

}

, а вот класс адаптера для переработчика

public class BlogListAdaptor extends RecyclerView.Adapter<BlogListAdaptor.MyViewHlder> {
private Activity activity;
private List<BlogData> list;

private boolean valid;
private EditText name, email, phone, date, noOfGuest, msg;
private Spinner partyMode, timeSlot;
private AlertDialog alertDialog;
final Calendar myCalendar = Calendar.getInstance();
private String PartyModeStr, TimeSlotStr;
private String Id;
private String title;

public BlogListAdaptor(Activity activity, List<BlogData> list) {
    this.activity = activity;
    this.list = list;
}

public void setPostList(List<BlogData> dataList) {
    list = dataList;
    notifyDataSetChanged();
}

@NonNull
@Override
public MyViewHlder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.blog_list_layout, viewGroup, false);
    MyViewHlder my = new MyViewHlder(view);
    return my;
}

@Override
public void onBindViewHolder(@NonNull MyViewHlder myViewHlder, int i) {

    myViewHlder.Title.setText(list.get(i).getTITLE());
    myViewHlder.Author.setText(list.get(i).getAUTHOR());

    if (list.get(i).getIMGSRC() != null)
    Glide.with(activity).load(Constant.ImgRoot + list.get(i).getIMGSRC())
            .into(myViewHlder.Image);

    myViewHlder.cardview.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(activity, DetailActivity.class);
            intent.putExtra("Id", list.get(i).getID());
            intent.putExtra("Title", list.get(i).getTITLE());
            intent.putExtra("Author", list.get(i).getAUTHOR());
            intent.putExtra("Content", list.get(i).getCONTENT());
            activity.startActivity(intent);

        }
    });

}

@Override
public int getItemCount() {
    return list.size();
}

class MyViewHlder extends RecyclerView.ViewHolder {

    private TextView Title, Author;
    private ImageView Image;
    private CardView cardview;

    public MyViewHlder(@NonNull View itemView) {
        super(itemView);
        Image = itemView.findViewById(R.id.image);
        Title = itemView.findViewById(R.id.title);
        Author = itemView.findViewById(R.id.author);
        cardview = itemView.findViewById(R.id.cardview);

    }
}

}

Пожалуйста, помогите мне, позвоните api ...

fragment_newsfeed_placeholder

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycler_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

frag_news_feed

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimary"
    app:tabGravity="center"
    app:tabMode="scrollable"
    app:tabTextColor="#ffffff" />

<androidx.viewpager.widget.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/tabs" />

...