RecyclerView mit start-offset

Möchte ich, dass mein erste element im recycler Ansicht offset von start-Liste.
RecyclerView mit start-offset
RecyclerView mit start-offset

Ich versuche verwenden

void onCreate(Bundle savedInstanceState){
...
    linearLayoutManager.scrollToPositionWithOffset
...
}

Aber es funktioniert nicht. Ich undestand, dass ich mit leeren Blick, wie null-element in der Liste ist, aber es keine perfekte Lösung.

  • Sie ist zwei-Lösung 1) verwenden Sie Einfach zwei Arten von Ansichten, 2) fügen Sie paddingTop zu Ihrem recyclerview, und fügen Sie clipToPadding falsch.
  • Ich verstehe nicht die erste Lösung, aber zwei Lösung ist in Arbeit!!! Großen Dank
InformationsquelleAutor | 2016-08-02



2 Replies
  1. 5

    Erste Lösung:

    public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
        public static final int VIEW_HEADER = 1, VIEW_INFO = 2;
        private Context context;
    
        public Adapter(Context context) {
            this.context = context;
        }
    
        @Override
        public int getItemViewType(int position) {
            if(position == 0) return VIEW_HEADER;
            return VIEW_INFO;
        }
    
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            switch (viewType){
                case VIEW_HEADER:
                    return new HeaderViewHolder(LayoutInflater.from(context).inflate(your view));
                case VIEW_INFO:
                    return new InfoViewHolder(LayoutInflater.from(context).inflate(your view));
            }
            return null;
        }
    
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            if(holder instanceof HeaderViewHolder){
    
            }else if (holder instanceof InfoViewHolder){
    
            }
        }
    
        @Override
        public int getItemCount() {
            return your items count + 1; //add the header
        }
    
        public static class HeaderViewHolder extends RecyclerView.ViewHolder{
    
            public HeaderViewHolder(View itemView) {
                super(itemView);
            }
        }
    
        public static class InfoViewHolder extends RecyclerView.ViewHolder{
    
            public InfoViewHolder(View itemView) {
                super(itemView);
            }
        }
    }

    zweite Lösung:fügen Sie paddingTop zu Ihrem recyclerview, und fügen Sie clipToPadding falsch.

  2. 0

    Ich habe eine Lösung gefunden und es funktioniert Super. Zuerst müssen Sie, um Ihre recyclerviews letzten offset-Wert durch;

    int offset = recyclerView.computeVerticalScrollOffset();

    Oder Sie weisen Ihre offset-Wert. Dann, nachdem Sie Ihren adapter, können Sie Ihre offset-wie unten.

    recyclerView.setAdapter(Adapter.this);
    LinearLayoutManager llm = (LinearLayoutManager) 
    recyclerView.getLayoutManager();
    llm.scrollToPositionWithOffset(0,-1*offset);

    Seinen Mittelwert; llm Scroll-position auf 0(start) und geht dann nach unten, um den offset.
    Ich hoffe, es hilft!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.