是否有可能添加項目裝飾頁腳,而不使用適配器?由於我正在處理一個非常複雜的適配器,並且有很多不同的視圖持有者類型,所以我希望爲我的應用中的每個列表無縫添加一個相同的頁腳。RecyclerView:添加項目裝飾頁腳?
2
A
回答
0
據我所知,這是最好的做法。
下面是RecyclerView.ItemDecoration類描述:
/**
* An ItemDecoration allows the application to add a special drawing and layout offset
* to specific item views from the adapter's data set. This can be useful for drawing dividers
* between items, highlights, visual grouping boundaries and more.
然而,根據適配器viewtype分頻器實現自己的除法時,您可以設置特定的行爲必須處理。以下是我在一個在線課程使用的示例代碼:
public class Divider extends RecyclerView.ItemDecoration {
private Drawable mDivider;
private int mOrientation;
public Divider(Context context, int orientation) {
mDivider = ContextCompat.getDrawable(context, R.drawable.divider);
if (orientation != LinearLayoutManager.VERTICAL) {
throw new IllegalArgumentException("This Item Decoration can be used only with a RecyclerView that uses a LinearLayoutManager with vertical orientation");
}
mOrientation = orientation;
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == LinearLayoutManager.VERTICAL) {
drawHorizontalDivider(c, parent, state);
}
}
private void drawHorizontalDivider(Canvas c, RecyclerView parent, RecyclerView.State state) {
int left, top, right, bottom;
left = parent.getPaddingLeft();
right = parent.getWidth() - parent.getPaddingRight();
int count = parent.getChildCount();
for (int i = 0; i < count; i++) {
//here we check the itemViewType we deal with, you can implement your own behaviour for Footer type.
// In this example i draw a drawable below every item that IS NOT Footer, as i defined Footer as a button in view
if (Adapter.FOOTER != parent.getAdapter().getItemViewType(i)) {
View current = parent.getChildAt(i);
RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) current.getLayoutParams();
top = current.getTop() - params.topMargin;
bottom = top + mDivider.getIntrinsicHeight();
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if (mOrientation == LinearLayoutManager.VERTICAL) {
outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
}
}
或者你可以使用一個名爲Flexible Divider庫,允許使用自定義繪製或資源進行設置。
+0
感謝您的回答安東。你是不是最好的做法,因爲項目裝飾器可能有不同的用途,所以我可能會回退到舊的和乾淨的適配器,使用不同的視圖類型。 – rqiu
相關問題
- 1. RecyclerView添加頁腳
- 2. Recyclerview與中心項目裝飾
- 3. RecyclerView不同的項目裝飾不同的項目
- 4. 如何重新裝飾recyclerView項目被刪除的項目下
- 5. RecyclerView多次添加項目
- 6. RecyclerView添加項目動畫
- 7. 添加項目到RecyclerView從其他刪除RecyclerView項目
- 8. 僅裝飾RecyclerView的絕對第一項
- 9. jqmobi動態添加項目到頁腳?
- 10. RecyclerView裝飾器在刷新時添加額外的填充
- 11. recyclerview刷新添加新項目列表
- 12. 在RecyclerView片段中添加項目
- 13. RecyclerView將marginBottom添加到其項目
- 14. TreeViewer中的項目裝飾
- 15. 的Android RecyclerView addItemDecoration不會增加裝飾RecyclerView
- 16. 添加調度裝飾
- 17. RecyclerView添加項目,但替換最初的項目
- 18. 頁腳文字裝飾不起作用
- 19. 在RecyclerView的最後一個視圖上繪製的自定義項目裝飾
- 20. RecyclerView刪除最後一個項目後的分隔器/裝飾器
- 21. 從AlertDialog輸入項中將項目添加到RecyclerView
- 22. RecyclerView:新加載的項目不會添加到頂部
- 23. 增加recyclerview的高度動態的項目添加
- 24. Recyclerview子項目
- 25. 如何通過支持庫添加頁腳到recyclerView支持庫
- 26. 包裝追加方法添加三個項目。如何添加一個項目?
- 27. 添加類裝飾器的類屬性
- 28. 裝飾Java的調用添加行爲
- 29. 添加裝飾功能的一類
- 30. 添加環境中使用裝飾
你使用的適配器與listView或gridview? –
抱歉不清楚,但正如標題所述,我正在使用recyclerview – rqiu