수색…


소개

Apps 성능은 사용자 환경의 중요한 요소입니다. UI 스레드에서 작업하는 것과 같은 나쁜 수행 패턴을 피하고 빠르고 반응이 빠른 응용 프로그램을 작성하는 방법을 배우십시오.

ViewHolder 패턴으로 뷰 룩업 저장하기

특히 ListView 에서는 스크롤하는 동안 너무 많은 findViewById() 호출을 수행하여 성능 문제가 발생할 수 있습니다. ViewHolder 패턴을 사용하면 이러한 조회를 저장하고 ListView 성능을 향상시킬 수 있습니다.

목록 항목에 단일 TextView 가 포함 된 경우 ViewHolder 클래스를 만들어 인스턴스를 저장합니다.

static class ViewHolder {
    TextView myTextView;
}

목록 항목을 만드는 동안 ViewHolder 객체를 목록 항목에 연결합니다.

public View getView(int position, View convertView, ViewGroup parent) {
    Item i = getItem(position);
    if(convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_item, parent, false);

        // Create a new ViewHolder and save the TextView instance
        ViewHolder holder = new ViewHolder();
        holder.myTextView = (TextView)convertView.findViewById(R.id.my_text_view);
        convertView.setTag(holder);
    }

    // Retrieve the ViewHolder and use the TextView
    ViewHolder holder = (ViewHolder)convertView.getTag();
    holder.myTextView.setText(i.getText());
   
    return convertView;
}

이 패턴을 사용하면 findViewById() 는 새로운 View 가 생성되고 ListView 가 훨씬 효율적으로 뷰를 재활용 할 수있을 때만 호출됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow