Hier ist mein SzenarioAndroid RecyclerView finden auf ItemDecoration ersten und letzten Blick aus
- ich Raum hinzufügen müssen auf den ersten und letzten Punkt der Recycler Ansicht
Ich tue so
ItemDecoration
mitrecyclerView.addItemDecoration(new RecyclerView.ItemDecoration() { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int totalHeight = parent.getHeight(); int viewHeight = getResources().getDimensionPixelOffset(R.dimen.breadcrumb_btn_height); int padding = (totalHeight - viewHeight)/2; //to position view on middle if (view.getTag() instanceof Integer) { int position = (int) view.getTag(); if (position == 0) { //first position outRect.set(padding, padding, 0, padding); } else if (position == linearLayoutManager.getItemCount() - 1) { //last position outRect.set(0, padding, padding, padding); } else { outRect.set(0, padding, 0, padding); } } } });
Hier habe ich
LinearLayoutManager
mitHorizontal Orientation
I
position
Tag aufRecyclerView Adapter
in der folgenden Art und Weise Elemente aufItemDecoration
so dass später auf Entfernen und Hinzufügen von@Override public void onBindViewHolder(BreadCrumbViewHolder holder, int position) { holder.setPosition(position); }
Gibt es eine andere Art und Weise hat keinen Zugriff auf
RecyclerView
erstes und letztes Kind bin Hinzufügen Problem.
Awesome Mann. Vielen Dank. Fügen Sie stattdessen 'parent.getChildPosition (view)' anstelle von 'parent.getChildAdapterPosition (view)' hinzu. – laaptu
@laaptu Die getChildPosition-Methode ist veraltet. In der Dokumentation wird getChildAdapterPosition oder getChildLayoutPosition angegeben. –
In diesem Fall sollten Sie 'getChildLayoutPosition (view)' in Kombination mit 'state.getItemCount()' anstelle von 'getChildAdapterPosition (view)' verwenden. Sie berücksichtigen die Positionen im aktuellen Layout-Durchlauf, die weniger aktuell sein können als die Positionen im Adapter. – BladeCoder