강력 한 기능 의 Android 스크롤 컨트롤 RecyclerView

RecyclerView 의 사용 은 ListView 의 사용 보다 비교적 복잡 하 다.ListView 의 사용 은 다섯 단계 이 고 우리 의 RecyclerView 의 사용 은 7 단계 로 각각 다음 과 같다.
1.현재 프로젝트 의 build.gradle 의 dependencies 패키지 에 copile'com.android.support.recyclerview-v7:xx.x.x'(x 는 현재 최신 버 전)를 추가 합 니 다.
2.레이아웃 에 RecyclerView 컨트롤 을 추가 하고 하위 항목 레이아웃 과 어댑터 류 를 만 듭 니 다.
3.어댑터 만 들 기
4.데이터 원본 정의
5.findViewById 를 통 해 RecylerView 목록 컨트롤 찾기
6.setLayoutManager()를 통 해 RecylerView 에 레이아웃 관리 자 를 설정 합 니 다.
7.setAdapter()를 통 해 어댑터 설정**
다음은 코드 나 그림 을 이용 하여 모든 절 차 를 자세하게 설명 하 겠 습 니 다.
**첫 번 째 단계:현재 프로젝트 의 build.gradle 의 dependencies 패키지 에 copile'com.android.support.recyclerview-v7:xx.x.x'(x 는 현재 최신 버 전)를 추가 합 니 다.
Android 는 RecyclerView 를 슈퍼 port 라 이브 러 리 에 정의 하기 때문에 이 컨트롤 을 사용 하려 면 해당 하 는 의존 라 이브 러 리 를 추가 해 야 합 니 다.그래서 첫 번 째 조작 이 있 었 습 니 다.여기 서 라 이브 러 리 의존 을 추가 하 는 두 가지 방법 을 소개 합 니 다.**
1.파일 에 직접 수 동 으로 추가 하고 절차 도 수 동 으로 추가 합 니 다.
这里写图片描述
추가 가 완료 되면 저장 하고 아래 Sync Now 를 누 르 면 동기 화 됩 니 다.뭐?뭐?Sync Now 어디 있 는 지 몰라 요?0.0
这里写图片描述
2.레이아웃 파일 열기:
这里写图片描述
这里写图片描述
시스템 이 추가 되 었 을 때 레이아웃 인터페이스 에 아무것도 없다 는 것 을 알 게 될 것 입 니 다.조급해 하지 마 세 요!이 때 옵션 표시 줄 에서 RecyclerView 컨트롤 을 레이아웃 에 끌 어 다 놓 으 면 다음 화면 이 나타 납 니 다.라 이브 러 리 의존 도 를 추가 하 는 데 성공 했다 는 것 을 증명 합 니 다.RecyclerView 컨트롤 을 사용 할 수 있 습 니 다.
这里写图片描述  
첫 번 째 방법 에 비해 두 번 째 방법 은 비교적 편리 하 다.현재 버 전 을 수 동 으로 입력 하고 알 필요 가 없 으 며 오류 율 이 적다.
두 번 째 단계:레이아웃 에 RecyclerView 컨트롤 을 추가 하고 하위 항목 레이아웃 과 어댑터 류 를 만 듭 니 다.사실 첫 번 째 단 계 는 이미 말 했 듯 이 컨트롤 을 레이아웃 인터페이스 로 끌 어 오 면 됩 니 다.
-그러면 레이아웃 코드 를 찾 아 보 겠 습 니 다.레이아웃 코드 에서 다음 과 같은 코드 세 션 을 발견 할 수 있 습 니 다.
这里写图片描述
얘 들 아,그 특징 을 발 견 했 니?맞 아,바로 RecyclerView 는 어떻게 우리 의 Button,TextView 등 컨트롤 의 머리 라벨 작성 방법 과 다 르 지?그것 은 RecyclerView 가 시스템 SDK 에 내 장 된 것 이 아니 기 때문에 완전한 패키지 경로 이름 android.support.v7.widget.RecyclerView 를 써 야 합 니 다).
주:직접 드래그 하 는 것 은 ID 가 생 성 되 지 않 았 습 니 다.여 기 는 수 동 으로 추가 해 야 합 니 다.RecyclerView 를 수 동 으로 추가 하 는 어린이 라면 가방 이름 경 로 를 적어 야 합 니 다.
레이아웃 파일 에 RecyclerView 의 하위 항목 레이아웃 을 만들어 야 합 니 다.코드 는 다음 과 같 습 니 다.
这里写图片描述  
실 현 된 미리 보기 효 과 는 여기 서 화면 을 왼쪽 은 그림 이 고 오른쪽 은 문자 입 니 다.
这里写图片描述
Fruit 실체 클래스 를 만 들 고 구조 기와 재 작성 get()방법 을 추가 합 니 다.
这里写图片描述  
마지막 으로 FruitAdapter 어댑터 의 종 류 를 만 들 고 어댑터 가 RecyclerView 를 계승 하도록 합 니 다.Adapter 는 범 형 을 FruitAdapter.ViewHolder 로 지정 합 니 다.그 중에서 View Holder 는 우리 FruitAdapter 에서 정의 하 는 내부 클래스 입 니 다.그리고 다시 쓰기:onCreateViewHolder(),onBindViewHolder(),getItemCount()세 가지 방법.모든 코드 는 다음 과 같 습 니 다:

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
   //    
  private List<Fruit> mFruitList;

  //         
  public FruitAdapter(List<Fruit> FruitList) {
    this.mFruitList = FruitList;
  }

  //  ViewHolder   
  // ①onCreateViewHolder()    ViewHolder  ,              
  @Override
  public FruitAdapet.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //  ViewHolder           View  ,           
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_fruit, parent, false);
    //  ViewHolder  
    ViewHolder viewHolder = new ViewHolder(view);
    //   
    return viewHolder;

  }

  //②onBindViewHolder()   RecyclerView         ,                  
  @Override
  public void onBindViewHolder(final FruitAdapet.ViewHolder holder, int position) {
    //            
    Fruit fruit = mFruitList.get(position);
    //  holder.ImageView      
    holder.imageView.setImageResource(fruit.getImageId());
    //  holder.TextView      
    holder.textView.setText(fruit.getName());

  }

  //③getItemCount()    RecyclerView     
  @Override
  public int getItemCount() {

    return mFruitList.size();
  }

  //  ViewHolder  RecyclerView.ViewHolder
  class ViewHolder extends RecyclerView.ViewHolder {
    ImageView imageView;
    TextView textView;


    //  ViewHolder
    public ViewHolder(View itemView) {
      super(itemView);
      //  View   findViewById                     
      imageView = (ImageView) itemView.findViewById(R.id.imageView);

      textView = (TextView) itemView.findViewById(R.id.textView);
    }
  }
}

이상 은 어댑터 FruitAdapter 의 코드 입 니 다.코드 에 주석 이 있 습 니 다.어린이 들 이 이해 할 수 있 을 거 라 고 믿 습 니 다!
마지막 단 계 는 모두 MainActivity 에서 작 성 된 것 입 니 다.우 리 는 따로 설명 하지 않 고 코드 를 직접 붙 입 니 다.그러면 더욱 한눈 에 알 수 있 습 니 다.모든 코드 에 주석 이 있 습 니 다.이해 하기 어렵 지 않 을 것 이 라 고 믿 습 니 다.
3.MainActivity 에서 데이터 원본 4 정의 어댑터 정의
5.findViewById 를 통 해 RecylerView 목록 컨트롤 찾기
6.setLayoutManager()를 통 해 RecylerView 에 레이아웃 관리 자 를 설정 합 니 다.
7.어댑터 만 들 기
8.setAdapter()를 통 해 어댑터 설정

public class MainActivity extends AppCompatActivity {
  private List<Fruit> fruitList;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //   :     ,        
    fruitData();

    //   :     
    FruitAdapet adapet = new FruitAdapet(fruitList);

    //   :     
    RecyclerView recyclerView= (RecyclerView) findViewById(R.id.recyclerView);

    //   :  setLayoutManager() RecylerView       
    //       
    //        :(this,LinearLayoutManager.HORIZONTAL, false);
    LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this,
        LinearLayoutManager.VERTICAL,false);
    recyclerView.setLayoutManager(linearLayoutManager);

    //   :     
    recyclerView.setAdapter(adapet);
  }

  public void fruitData() {
    //          
    fruitList = new ArrayList<>();
    //        ,          ,              
    Fruit apple = new Fruit("  ", R.drawable.apple);
    fruitList.add(apple);
    Fruit banana = new Fruit("  ", R.drawable.banana);
    fruitList.add(banana);
    Fruit apple1 = new Fruit("  ", R.drawable.apple);
    fruitList.add(apple);
    Fruit banana1 = new Fruit("  ", R.drawable.banana);
    fruitList.add(banana);
    Fruit apple2 = new Fruit("  ", R.drawable.apple);
    fruitList.add(apple);
    Fruit banana2 = new Fruit("  ", R.drawable.banana);
    fruitList.add(banana);
    Fruit apple3 = new Fruit("  ", R.drawable.apple);
    fruitList.add(apple);
    Fruit banana3 = new Fruit("  ", R.drawable.banana);
    fruitList.add(banana);
    Fruit apple4 = new Fruit("  ", R.drawable.apple);
    fruitList.add(apple);
    Fruit banana4 = new Fruit("  ", R.drawable.banana);
    fruitList.add(banana);
  }
}

자,RecyclerView 의 기본 코드 는 이 렇 습 니 다.참고 하 시기 바 랍 니 다.
사실 RecyclerView 와 클릭 이벤트 가 있 는데 저 는 여기에 쓰 지 않 았 습 니 다.후기 에 친구 들 이 필요 하면 추가 할 수 있 습 니 다.
사실 이것 도 폭포 흐름 효 과 를 실현 하 는 코드 입 니 다.만약 에 우리 가 폭포 흐름 효 과 를 실현 하려 면 하위 항목 의 구 조 를 그림 만 표시 하 는 것 으로 설정 하고(폭포 흐름 은 크기 가 다른 그림 을 사용 해 야 더 좋 은 효 과 를 볼 수 있 습 니 다)구조 파 라미 터 를 조정 하면 됩 니 다.레이아웃 설정 레이아웃 관리 에 다음 코드 를 설정 합 니 다.

//              
//                
   StaggeredGridLayoutManager layoutManager=new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
 recyclerView.setLayoutManager(layoutManager);
실행 효 과 는 다음 과 같 습 니 다.상하 스크롤 을 실현 할 수 있 습 니 다.
这里写图片描述
읽 어 주 셔 서 감사합니다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기