RecyclerView Adapter 보조 클래스 상세 설명 및 예시 코드

6276 단어 RecyclerViewAdapter
무엇
BaseRecyclerView Adapter Helper 는 강력 하고 유연 한 RecyclerView Adapter 입 니 다.
뭐 공부 해요?
  • Adapter 가 쓴 코드(정상 적 인 Adapter 에 비해 최소 3 분 의 2)를 대량으로 줄 일 수 있 습 니 다
  • 클릭 이벤트 추가 가능RecyclerView 에 애니메이션 을 쉽게 추가 할 수 있 습 니 다머리 추가,꼬리 추가
  • 드 롭 다운 리 셋 지원,드 롭 다운 더 많 음
  • 그룹 지원
  • 사용자 정의 item 형식 지원setEmptyView 지원4
  • 하위 레이아웃 여러 컨트롤 을 지원 하 는 클릭 이벤트
  • 효과 도

    사용 설정
    build.gradle 의 reposcories 에 추가:
    
    allprojects {
      repositories {
        maven { url "https://jitpack.io" }
      }
    }
    
    dependencies 추가
    
    dependencies {
      compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:v1.5.8'
    }
    
    어댑터 만 들 기
    
    public class QuickAdapter extends BaseQuickAdapter<Status> {
      public QuickAdapter(Context context) {
        super(context, R.layout.tweet, DataServer.getSampleData());
      }
    
      @Override
      protected void convert(BaseViewHolder helper, Status item) {
        helper.setText(R.id.tweetName, item.getUserName())
            .setText(R.id.tweetText, item.getText())
            .setText(R.id.tweetDate, item.getCreatedAt())
            .setImageUrl(R.id.tweetAvatar, item.getUserAvatar())
            .setVisible(R.id.tweetRT, item.isRetweet())
            .linkify(R.id.tweetText);
      }
    }
    
    
    아 이 템 추가 이벤트
    
    mQuickAdapter.setOnRecyclerViewItemClickListener(new BaseQuickAdapter.OnRecyclerViewItemClickListener() {
          @Override
          public void onItemClick(View view, int position) {
    
          }
    });
    
    
    애니메이션 추가
    
    //       (       )
    quickAdapter.openLoadAnimation();
    다른 애니메이션 효과 도 만 들 수 있 습 니 다.
    
    //     5   (  、  、    ,    、    )
    // ALPHAIN, SCALEIN, SLIDEIN_BOTTOM, SLIDEIN_LEFT, SLIDEIN_RIGHT
    quickAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
    
    또한 내 장 된 애니메이션 효과 가 만 족 스 럽 지 않 으 면 사용자 정의 가 용이 합 니 다.
    
    //          
    quickAdapter.openLoadAnimation(new BaseAnimation() {
      @Override
      public Animator[] getAnimators(View view) {
        return new Animator[]{
          ObjectAnimator.ofFloat(view, "scaleY", 1, 1.1f, 1),
          ObjectAnimator.ofFloat(view, "scaleX", 1, 1.1f, 1)
        };
      }
    });
    
    다양한 종류의 아 이 템 추가
    
    public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem> {
    
      public MultipleItemQuickAdapter(Context context, List data) {
        super(context, data);
        addItmeType(MultipleItem.TEXT, R.layout.text_view);
        addItmeType(MultipleItem.IMG, R.layout.image_view);
      }
    
      @Override
      protected void convert(BaseViewHolder helper, MultipleItem item) {
        switch (helper.getItemViewType()) {
          case MultipleItem.TEXT:
            helper.setImageUrl(R.id.tv, item.getContent());
            break;
          case MultipleItem.IMG:
            helper.setImageUrl(R.id.iv, item.getContent());
            break;
        }
      }
    
    }
    
    
    머리 및 아래쪽 추가
    mQuickAdapter.addHeaderView(getView());
    mQuickAdapter.addFooterView(getView());
    더 불 러 오기
    
    mQuickAdapter.setOnLoadMoreListener(PAGE_SIZE, new BaseQuickAdapter.RequestLoadMoreListener() {
          @Override
          public void onLoadMoreRequested() {
            if (mCurrentCounter >= TOTAL_COUNTER) {
              mRecyclerView.post(new Runnable() {
                @Override
                public void run() {
                  mQuickAdapter.isNextLoad(false);
                }
              });
            } else {
              // reqData
              mCurrentCounter = mQuickAdapter.getItemCount();
              mQuickAdapter.isNextLoad(true);
            }
          }
        });
    
    그룹 사용
    
    public class SectionAdapter extends BaseSectionQuickAdapter<MySection> {
       public SectionAdapter(Context context, int layoutResId, int sectionHeadResId, List data) {
        super(context, layoutResId, sectionHeadResId, data);
      }
      @Override
      protected void convert(BaseViewHolder helper, MySection item) {
        helper.setImageUrl(R.id.iv, (String) item.t);
      }
      @Override
      protected void convertHead(BaseViewHolder helper,final MySection item) {
        helper.setText(R.id.header, item.header);
        if(!item.isMroe)helper.setVisible(R.id.more,false);
        else
        helper.setOnClickListener(R.id.more, new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            Toast.makeText(context,item.header+"more..",Toast.LENGTH_LONG).show();
          }
        });
      }
    
    setEmptyView 사용 하기
    mQuickAdapter.setEmptyView(getView());
    하위 레이아웃 여러 컨트롤 을 추가 하 는 클릭 이벤트
    Adapter
    
    protected void convert(BaseViewHolder helper, Status item) {
      helper.setOnClickListener(R.id.tweetAvatar, new OnItemChildClickListener())
       .setOnClickListener(R.id.tweetName, new OnItemChildClickListener());
    }
    
    Activity
    
    mQuickAdapter.setOnRecyclerViewItemChildClickListener(new BaseQuickAdapter.OnRecyclerViewItemChildClickListener() {
          @Override
          public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
            String content = null;
            Status status = (Status) adapter.getItem(position);
            switch (view.getId()) {
              case R.id.tweetAvatar:
                content = "img:" + status.getUserAvatar();
                break;
              case R.id.tweetName:
                content = "name:" + status.getUserName();
                break;
            }
            Toast.makeText(AnimationUseActivity.this, content, Toast.LENGTH_LONG).show();
          }
        });
    
    이상 은 바로 RecyclerView Adapter 에 대한 자 료 를 정리 하고 관련 글 을 계속 추가 하 는 것 입 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기