0

Je veux implémenter le chargement de plus de fonctionnalités dans mon gridview Staggered. J'ai essayé quelques lignes de code pour l'utiliser comme addOnScrollListener mais n'a pas appelé quand je viens au fond de la liste.
S'il vous plaît trouver mon code que j'ai essayé d'implémenter le chargement plus de fonctionnalités mais n'obtenant pas le résultat attendu.
Quadrillage Gridview (Recycleview) avec charge plus de fonctionnalités à l'intérieur de la NestedScrollView

MY_STRAGGED_RECYCLIVIEW.addOnScrollListener(new RecyclerView.OnScrollListener() { 
        @Override 
        public void onScrolled(RecyclerView recyclerView, 
              int dx, int dy) { 
         super.onScrolled(recyclerView, dx, dy); 

         totalItemCount = staggeredGridLayoutManager.getItemCount(); 
         lastVisibleItem = staggeredGridLayoutManager 
           .findLastCompletelyVisibleItemPositions(null)[0]; 

         if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) { 
          // End has been reached 
          // Do something 
          System.out.println("I amm here dd "); 

          loading = true; 
         } 
        } 
       }); 

Dans mon code ci-dessus, System.out ne reçoit pas l'impression ...

J'ai essayé un autre auditeur pour le gridview stragged qui est setOnScrollChangeListener, mais il est aussi ne fonctionne pas

MY_STRAGGED_RECYCLIVIEW.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
      @Override 
      public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
       System.out.println("I amm here fffffffffff "); 

      } 
     }); 

même problème se pose avec cet écouteur, ne pas avoir à imprimer mon System.out

Sur chose que j'ai essayé dans ma classe à l'intérieur adapter la méthode onBindViewHolder qui est

if(getCount()==position) 
{ 
////for getting the last item of the recycleview 
} 

code ci-dessus est pas non plus working..Please me aider à court-circuiter de ce problème .. Merci :)



@Abbas s'il vous plaît vérifier le code de la carte ci-dessous

public class StraggredView extends RecyclerView.Adapter<StraggredView.ViewHolder> { 

    private List<Content> mDataSet; 
    private Context ctx; 

    public StraggredView(Context context, List<Content> arrList) { 
     ctx = context; 
     mDataSet = arrList; 

    } 

    @Override 
    public StraggredView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid, parent, false); 
     return new ViewHolder(view); 

    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, final int position) { 


     if(getItemCount()==position) 
     { 
      //// I AM NOT GETTING IT AT THE BOTTOM... IT INVOKED AS THE ADAPTER IS CALLED FIRST TIME...LOOK AT IT 
     } 

     if (mDataSet.get(position).getContentImage() == null || mDataSet.get(position).getContentImage().isEmpty()) { 

      Glide.with(ctx).load(R.drawable.no_content) 
        // .override(screenWidth/2, Utils.dpToPx(height)) 
        .into(holder.imgContent); 
     } else { 
      Glide.with(ctx).load(mDataSet.get(position).getContentImage()) 
        // .override(screenWidth/2, Utils.dpToPx(height)) 
        // .centerCrop() 
        //.transform(new CircleTransform()) 
        .into(holder.imgContent); 
     } 

     holder.imgContent.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mDataSet.get(position).getContentImage() != null 
         || !mDataSet.get(position).getContentImage().isEmpty()) { 
        FragmentActivity activity = (FragmentActivity) (ctx); 
        FragmentManager fm = activity.getSupportFragmentManager(); 
        FullScreenFragment dialog = FullScreenFragment.newInstance(
          mDataSet.get(position).getContentImage()); 
        dialog.show(fm, "dialog"); 
       } 
      } 
     }); 

    } 

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

    public class ViewHolder extends RecyclerView.ViewHolder { 
     public ImageView imgContent; 

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

      imgContent = (ImageView) itemView.findViewById(R.id.imgContent); 

     } 


    } 

} 
+0

vous pouvez utiliser ce lien: http://stackoverflow.com/questions/8664935/android-loading-data-like-facebook-and-twitter –

+0

@AmitRanjan. .J'ai essayé le lien ci-dessus, il ne fonctionne pas non plus en cas de grille de grille –

+0

pouvez-vous voir ce code: http://stackoverflow.com/questions/16851934/android-onscrolllistener-for-staggered-grid-view –

Répondre

0

En fait, j'utilisais la NestedScrollView qui était le parent view de mon auditeur Staggered recycleviewaddOnScrollListener et .Par conséquent setOnScrollChangeListener ne fonctionnait pas dans ce ..
Je l'ai utilisé setOnScrollChangeListener dans un NestedScrollView et il a bien fonctionné. Vérifiez ma solution ci-dessous pour elle: -

NestedScrollView myNestedScroll= (NestedScrollView) findViewById(R.id.myNestedScroll); 

myNestedScroll.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { 
    @Override 
    public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 

     if (scrollY > oldScrollY) { 
      Log.i(TAG, "Scroll DOWN"); 
     } 
     if (scrollY < oldScrollY) { 
      Log.i(TAG, "Scroll UP"); 
     } 

     if (scrollY == 0) { 
      Log.i(TAG, "TOP SCROLL"); 
     } 

     if (scrollY == (v.getChildAt(0).getMeasuredHeight() - v.getMeasuredHeight())) { 
      Log.i(TAG, "BOTTOM SCROLL"); 
     } 
    } 
});