2016-03-31 24 views
-1

Ich möchte eine horizontale RecyclerView, die nach einer bestimmten Position Scrollen stoppt. Angenommen, es gibt 100[1,2,3,...] Elemente in RecyclerView, aber wenn Benutzer es scrollen, sollte es aufhören zu scrollen, wenn es bis zum 10. Element/Position erreicht. Außerdem sollte danach eine Schaltfläche angezeigt werden. Wenn Sie auf diese Schaltfläche klicken, wird die gesamte Listenaktivität angezeigt.Stop Scrolling RecyclerView nach einer bestimmten Position

+0

Fragen Sie nach Paginierung in Recyclerview? – Rahul

Antwort

0

Was ich verstehe, ist, dass Sie mehr Funktionalität implementieren möchten. Versuchen Sie folgenden Code. Wenn mehr als 10 Elemente vorhanden sind, müssen Sie die Größe 11 an Ihren Adapter übergeben. Die letzte 11. Zelle wird mehr angezeigt (in Ihrem Fall "A-Taste"). Sie müssen 2 verschiedene Ansichtsarten implementieren. Eine mit normalem Layout und die zweite enthält Ihren Knopf für mehr anzeigen. Und zwei Viewholders in Ihrer Adapterklasse.

 List<Items> item_list; 
     final int TYPE_NORMAL = 0, TYPE_MORE = 1; 
     boolean isMoreCellVisible = false; 
     int count; 

     public CustomRecycleAdapter(List<Items> item_list) { 
      this.item_list = item_list; 

      if (item_list.size() > 10) { 
       count = 11; 
       isMoreCellVisible = true; 

      } else { 

       count = item_list.size(); 
      } 
     } 

Sie können Ihre Logik durchführen, welche Zelle Sie mit dem folgenden Code anzeigen möchten.

 @Override 
    public int getItemViewType(int position) { 

     if (position == 10) { 
      if (isMoreCellVisible) { 
       return TYPE_MORE; 

      } else { 

       return TYPE_NORMAL; 
      } 

     } else { 

      return TYPE_NORMAL; 
     } 

    } 

In onCreateViewHolder Verfahren Prüfung, die Art der Zelle, die Sie aufblasen müssen,

switch (viewType) { 

       case TYPE_NORMAL: { 
        // Return a new holder instance 
        vh = new ViewHolder0(contactView); 
       } 
       break; 

       case TYPE_MORE: { 
        // Return a new holder instance 
        vh = new ViewHolder2(contactView); 

       } 
       break; 
       default: 
        break; 
      } 

Für onBindViewHolder,

switch (holder.getItemViewType()) { 

       case TYPE_NORMAL: { 

        ViewHolder0 vh0 = (ViewHolder0) holder; 

        vh0.txt_name.setText(item_list.get(position).getName()); 

       } 
       break; 
       case TYPE_MORE: { 

        //View more layout  
        ViewHolder2 vh2 = (ViewHolder2) holder; 

       } 
       break; 
       default: 
        break; 
      } 

In getItemCount Rückkehr Zählung einfach,

@Override 
     public int getItemCount() { 
      return count; 
     } 

Sie können ein Button-Klick-Ereignis in der Viewholder-Klasse festlegen, die Ihre Schaltfläche enthält. Sie können beim Klick auf die Schaltfläche alles wie beim Adapter mit allen 100 Datensätzen ausführen oder eine neue Aktivität öffnen, um alle Ihre Überläufe anzuzeigen.

Verwandte Themen