Qui è il mio scenarioAndroid RecyclerView scoprire prima e l'ultima vista sul ItemDecoration
- devo aggiungere spazio sul primo e l'ultimo punto di Recycler Visualizza
che sto facendo in modo da utilizzare
ItemDecoration
recyclerView.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); } } } });
Qui ho
LinearLayoutManager
conHorizontal Orientation
sto aggiungendo
position
tagRecyclerView Adapter
, nel modo seguente@Override public void onBindViewHolder(BreadCrumbViewHolder holder, int position) { holder.setPosition(position); }
C'è un altro modo per accedere
RecyclerView
primo e l'ultimo bambino suItemDecoration
in modo che in seguito la rimozione e l'aggiunta di elementi non avrà alcun problema.
Uomo fantastico. Grazie. Non aggiungere 'parent.getChildPosition (view)' invece di 'parent.getChildAdapterPosition (view)' – laaptu
@laaptu il metodo getChildPosition è stato deprecato. La documentazione dice di usare getChildAdapterPosition o getChildLayoutPosition. –
In questo caso credo che dovresti usare 'getChildLayoutPosition (view)' in combinazione con 'state.getItemCount()', invece di 'getChildAdapterPosition (view)'. Rappresentano le posizioni nel passaggio del layout corrente, che può essere meno recente rispetto alle posizioni nell'adattatore. – BladeCoder