>  기사  >  Java  >  NullPointerException을 발생시키지 않고 RecyclerView에 머리글과 바닥글을 어떻게 추가합니까?

NullPointerException을 발생시키지 않고 RecyclerView에 머리글과 바닥글을 어떻게 추가합니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-17 14:20:02211검색

How do you add a header and footer to a RecyclerView without getting a NullPointerException?

RecyclerView에서 머리글 및 바닥글 구현

문제:

머리글 또는 바닥글 추가 RecyclerView는 어려울 수 있습니다. 제공된 코드에서는 addView(View view, int position)를 사용하여 LinearLayoutManager에 뷰를 추가할 것을 제안했지만 이 접근 방식은 성공하지 못했고 NullPointerException이 발생했습니다.

해결책:

바닥글 추가

RecyclerView에 바닥글을 추가하려면 다음 단계를 따르세요.

  • 바닥글 뷰에 대한 ViewHolder를 만듭니다.
  • 필요한 경우 바닥글 보기를 확장하려면 onCreateViewHolder를 재정의하세요.
  • 바닥글 보기에 데이터를 바인딩하려면 onBindViewHolder를 재정의하세요.
  • 카운트에 바닥글을 포함하려면 getItemCount를 재정의하세요.
  • 바닥글을 일반 목록 항목과 구별하려면 getItemViewType을 재정의하세요.

바닥글 어댑터 예:

public class FooterViewHolder extends RecyclerView.ViewHolder {
    public FooterViewHolder(View itemView) {
        super(itemView);
    }
}

public class RecyclerViewWithFooterAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private static final int FOOTER_VIEW = 1;
    private List<String> data;

    @Override
    public int getItemCount() {
        return data == null ? 0 : data.size() + 1;
    }

    @Override
    public int getItemViewType(int position) {
        return position == data.size() ? FOOTER_VIEW : super.getItemViewType(position);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v;
        if (viewType == FOOTER_VIEW) {
            v = LayoutInflater.from(context).inflate(R.layout.list_item_footer, parent, false);
            return new FooterViewHolder(v);
        }
        v = LayoutInflater.from(context).inflate(R.layout.list_item_normal, parent, false);
        return new NormalViewHolder(v);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof FooterViewHolder) {
            FooterViewHolder vh = (FooterViewHolder) holder;
        } else {
            NormalViewHolder vh = (NormalViewHolder) holder;
            vh.bindView(position);
        }
    }
}

머리글 추가

RecyclerView에 헤더를 추가하는 과정은 비슷한 프로세스를 따릅니다.

  • 헤더 뷰에 대한 ViewHolder를 만듭니다.
  • 필요한 경우 헤더 뷰를 확장하려면 onCreateViewHolder를 재정의합니다.
  • RecyclerView.addHeaderView(View view)를 사용하여 RecyclerView에 헤더 뷰를 추가합니다.
  • 카운트에 헤더를 포함하려면 getItemCount를 재정의합니다.

추가 참고:

  • 여러 머리글과 바닥글이 필요한 경우 getItemViewType 및 getItemCount 메서드를 조정하여 유사하게 처리하세요.
  • 제공된 GitHub 저장소는 두 가지를 모두 추가하는 완전한 구현을 제공합니다. 머리글과 바닥글.

위 내용은 NullPointerException을 발생시키지 않고 RecyclerView에 머리글과 바닥글을 어떻게 추가합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.