Android 사용자 정의 LayoutManager 플 라 워 시트 구현

만약 당신 이 RecyclerView 원리 에 대해 아직 특별히 알 지 못 한다 면,당신 이 읽 어 보 는 것 을 매우 권장 합 니 다.
본 논문 의 프로젝트 도 사용자 정의 Layout Manager 의 절 호의 자 료 를 배 우 는 것 입 니 다.여러분 이 필요 로 하 는 것 이 있 으 면 잘 읽 으 세 요.
머리말
표 는 제 가 회사 에 들 어간 후부 터 사용 한 컨트롤 입 니 다.처음에 사용 한 것 은ScrollablePanel입 니 다.처음에 꽃 에 매 달 려 후기 에 능숙 하 게 사용 되 었 습 니 다.

사내 가 쓴 컨트롤 은 확실히 나의 일 에 큰 편 의 를 가 져 다 주 었 지만,여전히 몇 가지 문제 가 존재 한다.
  • 불규칙 한 표
  • 를 실현 할 수 없습니다.
  • 그 핵심 은 2 층 RecyclerView 의 내장 입 니 다.1 층 RecyclerView 만 사용 하면 성능 향상
  • 을 가 져 올 수 있 습 니 다.
  • 여러 개의 RecyclerView 는 가끔 인터페이스 변형
  • 을 초래 할 수 있다.
    제 가 깊이 공부 한 후에RecyclerView한 층RecyclerView으로 만 실현 할 수 있 을 까 생각 합 니 다.LayoutManager을 통 해 이 사고 가 가능 하 다 는 것 을 알 게 되 었 고RecyclerView을 바탕 으로 하 는 표 컨트롤TableView을 실현 할 수 있 을 까 생각 합 니 다.먼저 효 과 를 보 겠 습 니 다.
    사진 벽

    비슷 한 홈 페이지 가 어떻게 이 루어 지 냐 고 물 어 보 는 친구 들 이 많 습 니 다.이 제 는 사용자 정의 뷰 없 이도 쉽게 이 루어 질 수 있 습 니 다.
    교과 과정 표

    표.

    TableView 는 다음 과 같은 특징 을 가지 고 있 습 니 다.
  • 불규칙 표 지원
  • 가로 와 세로 스크롤 지원
  • 상단 과 왼쪽 부상 지원
  • RecyclerView 를 바탕 으로 하기 때문에 RecyclerView 사용자 정의 서브 보기,효율 적 인 회수,서브 보기 의 다양성 등 특징 이 있 습 니 다
  • 다 층 RecyclerView 내장 없 이 성능 이 더 좋 습 니 다
  • Github 주소
    쓰다
    첫 번 째 단계|xml 파일 추가
    
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".ui.fragment.table.TableFragment">
     
     <com.orient.me.widget.rv.adapter.TableView
     android:id="@+id/tb"
     android:layout_width="match_parent"
     android:layout_height="match_parent"/>
     
    </FrameLayout>
    두 번 째 단계|TableView 가 져 오기
    코드 를 보 여주 기 전에 TableView 의 주요 함 수 를 알 아 보 세 요.

    이것setTitle(boolean isLeftOpen, boolean isTopOpen)은 어떤 작용 을 합 니까?표 의 모든 칸 의 길이 와 너비 가 같 도록(하위 보 기 는 가로 방향 에서 여러 칸 을 차지 할 수 있 음)너비 와 높이 는 두 가지 방식 을 사용 합 니 다.
  • 구체 적 인 값 을 설정 하면 칸 의 너비 나 높 은 값 이 구체 적 인 것 이다
  • 한 줄 또는 한 열 에 수용 할 수 있 는 셀 수 설정
  • 그래서 너비 와 높이 는 각각 두 가지 가 있 고 모델 의 수량=2*2 가 있 으 며 모두 다음 과 같다.

    코드:
    
    // if use butterknife
    // or use findViewById
    @BindView(R.id.tb)
     TableView mTable;
     
    //     TableLayoutManager.MODE_A, 4, 8
    mTable.setModeAndValue(TableLayoutManager.MODE_A, 6, 8);
    세 번 째 단계|데이터 클래스 만 들 기
    구현ICellItem인터페이스:
    
    public class TableCell implements ICellItem {
     private String name;
     private String value;
     private int type;
     private int row;
     private int col;
     private int widthSpan;
     private int heightSpan;
     //...        Get Set  
     @Override
     public int getRow() {
     return row;
     }
     @Override
     public int getCol() {
     return col;
     }
     @Override
     public int getWidthSpan() {
     return widthSpan;
     }
     @Override
     public int getHeightSpan() {
     return heightSpan;
     }
    }
    4 단계|어댑터 설정
    
    private TableAdapter<TableCell> mAdapter;
    protected void initWidget(View root) {
     //            
     mTable.setAdapter(mAdapter = new TableAdapter<TableCell>(new ArrayList<>()) {
     @Override
     public int getItemLayout(TableCell tableCell, int pos) {
      // ...          
      //      
      return R.layout.table_cell_content_item;
     }
     @Override
     public BaseAdapter.ViewHolder<TableCell> onCreateViewHolder(View root, int itemType) {
      // itemType        
      //          ViewHolder
      return new ContentHolder(root);
     }
     });
    }
    //    ViewHolder
    class ContentHolder extends BaseAdapter.ViewHolder<TableCell>{
     TextView mContent;
     public ContentHolder(View itemView) {
      super(itemView);
      mContent = itemView.findViewById(R.id.tv_name);
     }
     @Override
     protected void onBind(TableCell tableCell) {
      mContent.setText(tableCell.getValue());
     }
     }
    다섯 번 째 단계|재 측량
    만약TableView에 사 용 된 모델 이Mode_A,Mode_CMode_D이 라면 재 측정 이 필요 합 니 다.
    
    mTable.post(() -> mTable.reMeasure());
    총결산
    전체적으로 말 하면TableView의 핵심 은TableLayoutManager,즉RecyclerView중의LayoutManager입 니 다.수시로 가로 세로 로 전환 할 수 있 는GridLayoutManager과 비슷 합 니 다.만약 에 여러분 들 이TableView에 관심 이 있다 면 저 는 후속 적 인 글 에서 원 리 를 깊이 있 게 하 겠 습 니 다.
    마지막 으로 프로그래머 에 게 배 워 야 할 지식 내용,기술 이 너무 많 습 니 다.환경 에서 도태 되 지 않 으 려 면 자신 을 계속 향상 시 켜 야 합 니 다.환경 에 적응 하 는 것 이 아니 라 환경 에 적응 하 는 것 입 니 다!
    위 에서 설명 한 것 은 소 편 이 소개 한 Android 사용자 정의 LayoutManager 구현 플 라 워 시트 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다!

    좋은 웹페이지 즐겨찾기