GetView 대. 사용자 지정 CursorAdapter의 BindView?
그래서 저는이 비디오 http://www.youtube.com/watch?v=N6YdwzAvwOA를 보고 있으며 Romain Guy는이 방법을 사용하여보다 효율적인 UI 어댑터 코드를 만드는 방법을 보여줍니다 getView()
. CursorAdapters에도 적용됩니까? 현재 bindView()
및 newView()
내 사용자 지정 커서 어댑터를 사용 하고 있습니다. 대신 getView를 사용해야합니까?
CursorAdapter
행 재활용 패턴을 적용하는 방식으로 및에 getView()
대리자를 구현 합니다. 따라서 및을 재정의하는 경우 행 재활용에 대해 특별한 작업을 수행 할 필요가 없습니다 .newView()
bindView()
CursorAdapter
newView()
bindView()
/**
* @see android.widget.ListAdapter#getView(int, View, ViewGroup)
*/
public View getView(int position, View convertView, ViewGroup parent) {
if (!mDataValid) {
throw new IllegalStateException("this should only be called when the cursor is valid");
}
if (!mCursor.moveToPosition(position)) {
throw new IllegalStateException("couldn't move cursor to position " + position);
}
View v;
if (convertView == null) {
v = newView(mContext, mCursor, parent);
} else {
v = convertView;
}
bindView(v, mContext, mCursor);
return v;
}
이 CursorAdapter 소스 코드는 분명히 cursorAdapter가 더 많이 작동합니다.
CursorAdapter
처럼 구현은 하위 클래스라는 일반 어댑터 다른 BaseAdapter
재정의 할 필요가 없습니다, getView()
, getCount()
, getItemId()
그 정보가 커서 자체에서 검색 할 수 있기 때문이다.
주어진 경우 하위 클래스 Cursor
를 만들려면 두 가지 메서드 만 재정의하면됩니다 CursorAdapter
.
bindView()
: 주어진 뷰가 제공된 커서에 데이터를 표시하도록 업데이트합니다.
newView()
: 이것은 목록에 들어가는 새로운 뷰를 구성하기 위해 호출됩니다.
은 CursorAdapter
( getView()
일반적인 방법 과 달리) 재활용 뷰를 처리합니다 Adapter
. newView()
새 행이 필요할 때마다 호출하지 않습니다 . 이미 View
(아님 null
)이 있으면을 직접 호출합니다 bindView()
. 이렇게하면 생성 된 뷰가 재사용됩니다. 각 뷰의 생성 및 채우기를이 두 가지 방법으로 분할함으로써 CursorAdapter
일반 어댑터에서와 같이이 두 가지가 모두 getView()
메서드 에서 수행되는 뷰 재사용을 달성합니다 .
참조 URL : https://stackoverflow.com/questions/3535074/getview-vs-bindview-in-a-custom-cursoradapter
'IT이야기' 카테고리의 다른 글
다른 메서드를 호출하는 메서드 단위 테스트 (0) | 2021.04.19 |
---|---|
PreparedStatements 및 성능 (0) | 2021.04.18 |
RoR의 자바 스크립트 및 HAML에 변수 값 삽입 (0) | 2021.04.18 |
linq에서 .edmx와 .dbml 파일의 차이점 (0) | 2021.04.18 |
Rails 자산 파이프 라인 : 모든 / vendor / assets / javascripts /?를 포함하는 표준 방법 (0) | 2021.04.18 |