BaseRecyclerAdapter의 다른 레이아웃 추가(머리 꼬리)

최근 안드로이드 소스 라이브러리'Base Recycler View Adapter Helper'를 작성해 흔한 요구 사항을 통합한 솔루션입니다. 많은 star 부탁드립니다~!
효과가 어떻습니까?
어떻게 사용합니까?
여러 개의 다른 레이아웃
public class MultipleItemAdapter extends BaseQuickAdapter<String> {
    private final int TEXT_TYPE = 1;
    private int mTextLayoutResId; 
   public MultipleItemAdapter(Context context, List data, int... layoutResId) {
        super(context, layoutResId[0], data);
        mTextLayoutResId = layoutResId[1];
    }
    @Override
    protected int getDefItemViewType(int position) {
        if (position % 2 == 0)
            return TEXT_TYPE;
        return super.getDefItemViewType(position);
   } 
   @Override
    protected BaseViewHolder onCreateDefViewHolder(ViewGroup parent, int viewType) {
        if (viewType == TEXT_TYPE)
            return new TextViewHolder(getItemView(mTextLayoutResId, parent));
        return super.onCreateDefViewHolder(parent, viewType);
    }
    @Override
    protected void onBindDefViewHolder(BaseViewHolder holder, String item) {
        if (holder instanceof TextViewHolder)
            holder.setText(R.id.tv, item); 
   }
    @Override
    protected void convert(BaseViewHolder helper, String item) {
        helper.setImageUrl(R.id.iv, item);
    }
    public class TextViewHolder extends BaseViewHolder {
        public TextViewHolder(View itemView) {
            super(itemView.getContext(), itemView);
        }
    }
}

머리 꼬리 추가
mQuickAdapter.addHeaderView(getView());
mQuickAdapter.addFooterView(getView());

원리 분석
여러 종류의 레이아웃을 정의해야 한다면 다음과 같은 몇 가지를 알아야 한다. - getItemViewType () 방법을 다시 쓰고 수요 규칙에 따라 type 값을 제시해야 한다. -onCreate ViewHolder() 방법에서 서로 다른 type에 따라 서로 다른 ViewHolder를 생성합니다 - onBind ViewHolder()에서 서로 다른holder의 유형에 따라 상대적인 데이터를 부여합니다 - 추가 레이아웃(예를 들어 머리 꼬리)이 있으면 getItem Count() 방법의 반환 수량을 수정해야 합니다
여러 개의 서로 다른 구조의 실현(삼부곡)
1. 다시 썼다getDefItemViewType() 방법은 바로 부류getItemViewType() 안의 방법이다. 위에서 말한 바와 같이 페이지의 수요에 따라 규칙을 만든다. 위의 UI는 TextView와 ImageView가 교체되기 때문에 이런 규칙을 썼다if (position % 2 == 0). 그들이 교체해서 표시할 수 있도록 보증한다.2. type이 완성되었습니다. 다음은 호출onCreateDefViewHolder()입니다. 위의 type에 따라 서로 다른 ViewHolder를 만듭니다. 3.다음에 onBindDefViewHolder()를 호출하여 위에서 만든 ViewHolder의 유형에 따라 해당하는 값을 부여합니다.
머리와 꼬리 추가(추가 레이아웃)
위의 기초 위에서 다시 쓰기getItemCount() 원래 데이터량에 추가 레이아웃의 수량을 더하면 코드는 다음과 같다.
@Override

public int getItemCount() {

int i = mNextLoadEnable ? 1 : 0;

return mData.size() + i + getHeaderViewsCount() + getFooterViewsCount();

}

주의: 머리를 추가하려면 원onBindViewHolder()에 포지션-머리 수량을 넣어야 합니다. 빼지 않으면 데이터가 두 번째부터 옮겨다니기 때문에 주의하세요!
int index = position - getHeaderViewsCount();
convert(baseViewHolder, mData.get(index));

뜻밖의 수확
국제 친구의 가맹!
매번 조금씩 수확할 때마다 계속해서 더 많은 기능을 확장하여'Base Recycler View Adapter Helper'를 사용하고 배울 수 있도록 합니다.

좋은 웹페이지 즐겨찾기