Android RecyclerView 기초 지식 상세 설명
5075 단어 AndroidRecyclerView
요 며칠 동안 저 는 RecyclerView 를 연구 해 왔 고 지금까지 의 제 성 과 를 여러분 께 공유 하고 싶 습 니 다.
RecyclerView 가 뭐 예요?
RecyclerView 는 어댑터 기반 의 모든 보기 에 비슷 한 렌 더 링 방식 을 제공 하 는 새로운 보기 그룹 입 니 다.이것 은 ListView 와 GridView 컨트롤 의 계승자 로 서 최신 슈퍼 port-V7 버 전에 서 지원 합 니 다.
RecyclerView 를 개발 할 때 확장 성 을 충분히 고려 했 기 때문에 생각 나 는 모든 종류의 레이아웃 을 만 들 수 있 습 니 다.하지만 사용 에 도 다소 불편 하 다.이것 이 바로 안 드 로 이 드―한 가지 일 을 완성 하 는 것 은 결코 쉽 지 않다.
RecyclerView 를 사용 하려 면 다음 세 가지 요 소 를 알 아야 합 니 다.
RecyclerView 는 신형 어댑터 를 포함 하고 있다.이것 은 현재 사용 하고 있 는 어댑터 와 유사 하지만,예 를 들 어 뷰 홀 더 를 사용 해 야 한다.사용 할 때 두 가지 주요 방법 을 다시 써 야 합 니 다.하 나 는 보기 와 소지 자 를 보 여 주 는 것 이 고 다른 하 나 는 보기 에 데 이 터 를 연결 하 는 데 사 용 됩 니 다.이렇게 하 는 것 은 첫 번 째 방법 은 우리 가 진정 으로 새로운 보 기 를 만들어 야 할 때 만 호출 되 는 것 이 며,그것 이 이미 회수 되 었 는 지 검사 할 필요 가 없다 는 것 이다.
; html-script: false ]
public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder> {
private List<ViewModel> items;
private int itemLayout;
public MyRecyclerAdapter(List<ViewModel> items, int itemLayout) {
this.items = items;
this.itemLayout = itemLayout;
}
@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(itemLayout, parent, false);
return new ViewHolder(v);
}
@Override public void onBindViewHolder(ViewHolder holder, int position) {
ViewModel item = items.get(position);
holder.text.setText(item.getText());
holder.image.setImageBitmap(null);
Picasso.with(holder.image.getContext()).cancelRequest(holder.image);
Picasso.with(holder.image.getContext()).load(item.getImage()).into(holder.image);
holder.itemView.setTag(item);
}
@Override public int getItemCount() {
return items.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView image;
public TextView text;
public ViewHolder(View itemView) {
super(itemView);
image = (ImageView) itemView.findViewById(R.id.image);
text = (TextView) itemView.findViewById(R.id.text);
}
}
}
이것 은 간단 한 어댑터 이지 만 일이 점점 복잡 해 지기 시작 했다.RecyclerView 에 서 는 onItemClickListener 방법 이 하나 도 없습니다(적어도 저 는 발견 하지 못 했 습 니 다).그래서 어댑터 는 사건 을 처리 하 는 좋 은 후보 이다.어댑터 에 항목 을 추가 하거나 제거 하려 면 어댑터 에 명확 하 게 알려 야 합 니 다.이것 은 이전의 notifyDataSetChanged()방법 과 약간 다르다.
; html-script: false ]
public void add(ViewModel item, int position) {
items.add(position, item);
notifyItemInserted(position);
}
public void remove(ViewModel item) {
int position = items.indexOf(item);
items.remove(position);
notifyItemRemoved(position);
}
LayoutManager이 종 류 는 보기 가 화면 에 어느 위치 에 놓 여 있 는 지 를 결정 하지만,이것 은 단지 그것 의 많은 직책 중의 하나 일 뿐이다.그것 은 스크롤 과 순환 이용 을 관리 할 수 있다.
LayoutManager 는 LinearLayoutManager 라 는 실현 클래스 만 있 고 1500 여 줄 의 코드 가 있 습 니 다.하지만 이 점 에서 얼마나 복잡 한 지 알 수 있다.관리 자 는 목록 보기(가로 와 세로 포함)를 모 의 할 수 있 지만 머 릿 말 과 페이지 끝 이 없습니다.
Layout Manager 를 위 한 하위 클래스 는 초보 자 에 게 적합 하지 않 습 니 다.저 희 는 커 뮤 니 티 에 의존 하여 RecyclerView 의 모든 잠재력 을 발굴 해 야 합 니 다.이 예 와 함께 짧 은 시간 안에 GridView 컨트롤 의 실현 을 업로드 하 겠 습 니 다.
이 배후 의 관건 은 LinearLayoutManager 의 코드 를 본 떠 BaseLayoutManager 를 만 들 고 이 를 바탕 으로 확장 하 는 것 이 라 고 생각 합 니 다.아마도 슈퍼 port-v7 의 최종 버 전 은 더 많 고 더 좋 은 실현 을 제공 할 것 이다.
ItemAnimator
ItemAnimator 는 어댑터 에서 받 은 알림 에 따라 보기 그룹의 수정 을 애니메이션 으로 표시 합 니 다.기본적으로 항목 추가 와 제거 애니메이션 을 자동 으로 표시 합 니 다.이것 도 간단 한 종류 가 아니 지만,우 리 는 Default ItemAnimator 가 이미 잘 작 동 할 수 있다 는 것 을 발견 했다.
RecyclerView 설정
그래서 마지막 으로 실행 중인 RecyclerView 를 초기 화 하려 면 다음 과 같은 일 을 해 야 합 니 다.
; html-script: false ]
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.list);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(new MyRecyclerAdapter(createMockList(), R.layout.item));
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());
setHasFixed Size()방법 은 RecyclerView 를 고정 적 인 크기 로 유지 하 는 데 사 용 됩 니 다.이 정 보 는 자신의 최적화 에 사 용 됩 니 다.총결산
RecyclerView 는 개발 자 에 게 무한 한 확장 능력 을 제공 하 는 강력 한 보기 입 니 다.학습 곡선 은 매우 가 파 를 수 있다.하지만 조만간 안 드 로 이 드 커 뮤 니 티 에서 Layout Manager 의 멋 진 실현 이 발 표 될 것 이 라 고 믿 습 니 다.
이 예 를 찾 을 수 있 는 github 창 고 를 만 들 고 있 습 니 다.그것 은 내 가 계획 한 확장 라 이브 러 리 의 기초 이다.GridView 의 실현 을 테스트 할 수 있 습 니 다.각종 형식의 피드백 을 환영 합 니 다.
이상 은 안 드 로 이 드 RecyclerView 의 기초 자료 에 대한 상세 한 설명 입 니 다.추 후 관련 자 료 를 계속 보충 하 겠 습 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.