-1

Ich verbinde zwei RecyclerView wie Sie auf dem Bild sehen.Wie bekomme ich Kinder eines Layout-Managers, die im Recyclerview-Adapter noch nicht sichtbar sind?

the image

einer von ihnen recyclerView mit Kopf geschnitten. (der untere)

ein anderer ist ein RecyclerView, der die Header der unteren als Registerkarte zeigt. (Das oberste)

ich den Datensatz für diese dynamisch erhalten mit Retrofit und Setzen von diesen getrennt

ich die oberste Elemente hervorheben möchten, indem Sie die untere scrollen. Scrollen ist erfolgreich und wenn die untere RecyclerView scrollt und zu ihrer Header-Position gelangt, geht top recyclerView an diese spezifische Position. Jetzt, als ich zu dieser Position scrollte, möchte ich auch das hervorheben.

ich eine XML-Datei für die Änderung der Artikel die Farbe verwenden, wenn sie ausgewählt:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@color/chooseCAndZ" android:state_selected="true"/> 
    <item android:drawable="@color/colorAccent" android:state_focused="true"/> 

</selector> 

und die Farbe des oberen recyclerView für Änderung der unten Job, wenn darauf geklickt und es funktioniert super:

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

    holder.mView.setSelected(selectedPos == holder.getAdapterPosition()); 

    holder.mView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Integer index = inList.get(holder.getAdapterPosition()); 
      linearLayoutManager.scrollToPosition(index); 

      if (holder.getAdapterPosition() == RecyclerView.NO_POSITION) return; 

      notifyItemChanged(selectedPos); 
      selectedPos = holder.getAdapterPosition(); 
      notifyItemChanged(selectedPos); 

     } 
    }); 
} 

tun auch diesen Job für im Boden recyclerView auf die spezifische Position Scrollen onBindViewHolder:

index = inList.get(vheader.getHeaderCategory()); 
foodRVLayoutManager.scrollToPosition(index); 

jetzt ist die Idee, die spezifische Ansicht von foodRVLayoutManager.getChildAt(i).setSelected(true); zu bekommen, um die Ansichtfarbe als selected zu ändern.

aber die Hauptprobleme sind diese:

** Das foodRVLayoutManager können nur Kinder bekommen, die sichtbar sind! es bedeutet, dass das Ändern der Farbe für sichtbare Kinder funktioniert.

** die onClick und scrollToPosition stören sich gegenseitig.

+0

Noch nicht sichtbar = Gesamtposten - derzeit sichtbar. ist es das was du willst ? – ADM

+0

@ADM Ich möchte nur auf alle Halteransichten zugreifen. Aber wenn ich versuche, Ansichten zu bekommen, die nach Position noch nicht sichtbar sind, habe ich Fehler bekommen. – MHSFisher

Antwort

0

schließlich löste ich das Problem nur durch foodRVLayoutManager.scrollToPosition(index); zu foodRVLayoutManager.scrollToPositionWithOffset(index, 3);

indem Wechsel versetzt, werden unsichtbar Artikel vor Highlight sichtbar.

Verwandte Themen