0

i am making app with Android Studio and fetching data in rest api using my Wordpress Website , i can see posts but the problem is it doesn’t display the very last 2 posts, when i log title in retrofit response in MainActivity i can see all posts, but in RecyclerView there is 2 posts hidden , this is my PostAdapter

 private List<Model> dataset;
    private Context mContext;
    int total_types;
    int viewTypeData = 0,viewTypeProgress = 2 ;
    private static final int AD = 1;
    private static final int LIST_AD_DELTA = 4;

    AdView adview;



    public PostAdapter(List<Model> list){
        dataset = list;
    }

    @NotNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NotNull ViewGroup parent, int viewType) {
        mContext = parent.getContext();
        if (viewType == AD) {

            adview = new AdView(mContext);
            adview.setAdSize( AdSize.LARGE_BANNER);

            adview.setAdUnitId(mContext.getResources().getString(R.string.banner_ad_unit_id));

            float density = mContext.getResources().getDisplayMetrics().density;
            int height = Math.round(AdSize.LARGE_BANNER.getHeight() * density);
            AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.FILL_PARENT, height);
            adview.setLayoutParams(params);

            new RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("C5468C2B8941779E34B14EB796B9EA1B"));

            AdRequest request = new AdRequest.Builder().build();
            adview.loadAd(request);
            return new Holder(adview);


        }
        if (viewType == viewTypeData){
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_list,parent,false);
            return new MyDataHolder(view);
        }else {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_loading,parent,false);
            return new MyProgressHolder(view);
        }
    }

    public void clearApplications() {
        int size = this.dataset.size();
        if (size > 0) {
            for (int i = 0; i < size; i++) {
                dataset.remove(0);
            }

            this.notifyItemRangeRemoved(0, size);
        }
    }





    @Override
    public void onBindViewHolder(@NotNull RecyclerView.ViewHolder holder, int position) {
        Model model = dataset.get(getRealPosition(position));

        String tagID = model.tagsid;

        if (holder instanceof MyDataHolder){
            ((MyDataHolder)holder).showModel(model);

            Glide.with(mContext)
                    .load(model.imageUrl)
                    .dontAnimate()
                    .placeholder(R.drawable.icon)
                    .into( ((MyDataHolder)holder).imageView);



        }

    }

    private int getRealPosition(int position) {
        if (LIST_AD_DELTA == 0) {
            return position;
        } else {
            return position - position / LIST_AD_DELTA;
        }
    }

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

    @Override
    public int getItemViewType(int position){
        if (position > 0 && position % LIST_AD_DELTA == 0) {
            return AD;
        }
        return viewTypeData;
    }
    void showHideProgress(boolean shouldShowProgress){
        if (shouldShowProgress){
            dataset.add(new Model("progress","","","","","","","","","",""));
            Handler handler = new Handler();

            final Runnable r = new Runnable() {
                public void run() {
            notifyItemInserted(dataset.size()-1);
                }
            };

            handler.post(r);

        }else {
            dataset.remove(dataset.size()-1);
            notifyItemRemoved(dataset.size()-1);
        }
    }
    void addItemsToList(List<Model> newItems){
        if (dataset.isEmpty()){
            dataset.addAll(newItems);
            notifyDataSetChanged();
        }else {
            int lastItemPosition = dataset.size() -1;
            dataset.addAll(newItems);
            notifyItemRangeInserted(lastItemPosition,newItems.size());
        }
    }
    class MyDataHolder extends RecyclerView.ViewHolder{
        TextView titleView,subTitleView,postViews,tagsView,date;
        ImageView imageView;
        ImageButton sharebtn;
        CardView rootView;
        // Use Glide to load image to image view




        public MyDataHolder(@NotNull View itemView) {
            super(itemView);
            titleView = itemView.findViewById(R.id.title);
            date = itemView.findViewById(R.id.date);
            subTitleView = itemView.findViewById(R.id.subtitle);
            postViews = itemView.findViewById(R.id.postview);
            tagsView = itemView.findViewById(R.id.tags);
            imageView = itemView.findViewById(R.id.Icon);
            sharebtn = itemView.findViewById(R.id.share);
            rootView = itemView.findViewById(R.id.recycler_item_root_view);

           

            

            rootView.setOnClickListener(v -> {
                Bundle bundle = new Bundle();
                bundle.putParcelable("my_key",dataset.get(getRealPosition(getAdapterPosition())));
                Intent intent = new Intent(mContext, PostDetails.class);
                intent.putExtra("my_bundle",bundle);
                mContext.startActivity(intent);
            });
        }
        void showModel(Model model){
            titleView.setText(model.title);
            tagsView.setText(model.tags);
            date.setText(model.date);
            subTitleView.setText(model.subTitle);
            postViews.setText(model.commentcount);
        }
    }
    static class MyProgressHolder extends RecyclerView.ViewHolder{
        ProgressBar progressBar;
        public MyProgressHolder(@NotNull View itemView) {
            super(itemView);
            progressBar = itemView.findViewById(R.id.progressbar);
        }
        void show(){
            progressBar.setVisibility(View.VISIBLE);
        }
    }

    public class Holder extends RecyclerView.ViewHolder {
        public ProgressBar progressBar;

        public Holder(View itemView) {
            super(itemView);


        }
    }
}

i have tried to remove Admob ads but still the same , please help

noorapps
  • 39
  • 1
  • 6

0 Answers0