꾸준히 안타치기

리사이클러뷰, 리스트뷰 본문

Android _ 서버연동_채팅/Android - UI

리사이클러뷰, 리스트뷰

글자줍기 2021. 2. 7. 13:27
반응형

https://medium.com/@bansooknam/android-recyclerview-%EC%9A%94%EC%95%BD-aaea4a9c95e7
2.리사이클러뷰의 모듈화

 

Android RecyclerView 요약

1. 구성요소

medium.com

어뎁터 : 새로운 뷰의 추가를 위한 어뎁터

      • 어뎁터는 데이터를 가져와서 뷰에 적용시킨다.
      • 어뎁터가(뷰홀더를 전달) ->리사이클러뷰에게 전달시킨다.
      • ViewHolder 클래스를 static으로 정의한다.

       OnCreateVIewHolder 

  • 뷰홀더 객체가 만들어 질때 자동으로 호출됨
  • 뷰 타입을 위한 정수 값이 파라미터로 전달됨
  • xml레이아웃을 인플레이션하여 뷰그룹객체에 설정

    OnBindVIewHolder

  • 재사용될때 호출됨 
  • 뷰 객체는 기존것을 그대로 사용하고, 데이터만 바꿔줌

 ViewHolder:  실제 아이템의 레퍼런스를 가지고 있음

      • findviewbyid를 레이아웃에 뷰가 추가될때가 아닌 뷰가 생성될때만 호출
      •  뷰에 새로운 데이터를 넣어 업데이트할때 캐시로 사용함.    
      • 클릭 이벤트를 처리할수 있게 만든다. 
      • 어댑터 객체 밖에 리스너를 설정하고, 설정된 리스터 쪽으로 이벤트를 전달받도록 하는 것이 좋다.

3. 왜 뷰홀더를 사용하는 것일까?

  뷰홀더 사용이 중요한 이유 : 추가할 데이터나 이미지를 포함하는 뷰를 캐쉬하기 떄문에!

  계속 어뎁터로부터 findeviewbyid를 호출하는 것은 무거운 작업이기 떄문에 비효율적이다 .

  특히 계층적인 뷰구조를가질떄는 더욱더 비효율적이다. 그래서 뷰홀더에 뷰전체를 캐쉬시키는것이 최선이다.

 

뷰홀더가 하는 일 - 리스트 항복 하나의 view를 만들고 보존하는 일을 한다.

리사이클러뷰는 Adapter를 통해서 viewHolder 객체를 생성한다. 

ViewHolder 클래스 내부에는 itemView라는 필드가 있는 데 ,해당 필드로 View 객체를 가져온다. 

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
// 
    ArrayList<String> arr = new ArrayList<String>();

    CustomAdapter( ArrayList<String> arr){
        this.arr = arr;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_test, parent, false);

        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.getTextView().setText(arr.get(position));
    }

    @Override
    public int getItemCount() {
        return arr.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        private final TextView textView;

        public ViewHolder(View view) {
            super(view);
            // Define click listener for the ViewHolder's View

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

        public TextView getTextView() {
            return textView;
        }
    }

}

       

레이아웃 매니저 : 리사이클러뷰에게 뷰를 어떻게  보여줄지 말해줌.

      • 수직, 수평 , 그리드 등으로 보여주는거나 아이템을 추가 제거할떄 애니메이션 효과를 넣을 수 있음.

 

 

 

https://programmingfbf7290.tistory.com/entry/%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%AC%EC%9A%B4-RecyclerView

 

ppizil.tistory.com/38

 

[안드로이드] Recyclerview 제대로 알고 쓰자 !

안녕하세요 개발자 삐질입니다 오늘 제가 소개하고 싶은 내용은 제대로 된 리사이클러뷰의 개념 입니다. 여러분, 리사이클러뷰는 리스트뷰 -> 리사이클러뷰 즉 리스트형식의 UI를 구성하는 데

ppizil.tistory.com

jjunji.tistory.com/85

 

Android_RecyclerView(리사이클러뷰)_re

RecyclerView 1. 어답터의 개념 Adapter의 역할  1) List의 셀 하나하나의 맞게 데이터를 가공한다.  2) 데이터가 통째로 바뀐다고 해도 (데이터 Title, Name, Number 가 Car number, Address) 어답터가 한번..

jjunji.tistory.com

jjunji.tistory.com/70?category=702320

 

ListView(리스트 뷰)

ListView : 일반적으로 리스트 형태로 된 화면 컨트롤, 여러 개의 아이템 중에 선택하는 기능을 넣을 때 자주 사용. 위 그림은 리스트 뷰와 같은 선택 위젯이 사용되는 방식이다. 원본 데이터를 위

jjunji.tistory.com

옆으로 넘겨서 삭제, 이동하기

youtu.be/IljgyKeTxUw

반응형
Comments