오픈 소스 프로젝트 pulltorefresh 에 관 한 것들
지난 글 에서 저 는 pulltorefresh 를 볼 때 부족 한 점 을 발 견 했 습 니 다. 이 글 에서 예 를 들 어 PullTofresh GridView 를 설명 하 겠 습 니 다. 우 리 는 이 사용자 정의 GridView 를 사용 하려 면 xml 에서 구 조 를 정의 합 니 다. 이때 GridView 의 일부 속성 이 자동 으로 보완 되 지 않 고 스스로 생 성 할 수 있 는 것 은 모두 LinearLayout 의 속성 입 니 다.PullTofreshGridView 가 최종 적 으로 LinearLayout 를 계승 하기 때문에 xml 에 레이아웃 을 쓸 때 LinearLayout 의 속성 만 자동 으로 보완 할 수 있 습 니 다.여기까지 말 하면 GridView 의 속성 을 잃 어 버 릴 것 이 라 고 생각 할 수 있 습 니 다. 처음에 저도 그렇게 생각 했 습 니 다. 그러나 자동 으로 보완 할 수 없 는 속성 값 을 수정 한 후에 유용 하 다 는 것 을 알 게 되 었 습 니 다. 그리고 소스 코드 를 따라 보 니 기본 클래스 에 addview 방법 을 다시 썼 습 니 다. 기본 클래스 에 추 가 된 view 를 모두 기본 클래스 에서 만 든 하위 클래스 의 view 에 추가 하 였 습 니 다.위의 한 마디 가 너무 짧 고 복잡 할 수도 있 으 니 다시 한 번 자세히 설명 하 겠 습 니 다.기본 클래스 는 LinearLayout 에서 계승 한 추상 클래스 입 니 다. 그 안에 추상 적 인 방법 createRefreshableView 가 있 습 니 다. 이 추상 적 인 방법 은 하위 클래스 에서 기본 클래스 에 view (예 를 들 어 GridView) 를 되 돌려 주 고 기본 클래스 의 구조 함수 에서 먼저 FrameLayout 를 만 든 다음 에 위 에서 되 돌아 온 하위 클래스 를 만 든 view (예 를 들 어 GridView) addview 를 만 듭 니 다.(이 addview 는 우리 가 말 하고 자 하 는 다시 쓰 는 것 이 아 닙 니 다) 이 FrameLayout 에 이 FrameLayout 를 기본 클래스 의 보기 에 추가 합 니 다. 즉, 여기에 3 층 이 내장 되 어 있 습 니 다. 기본 클래스 의 LinearLayout 1 층, FrameLayout 1 층, 하위 클래스 가 만 든 view (예 를 들 어 GridView) 가 있 습 니 다.1 층. 이렇게 말 하면 대충 알 수 있 을 것 같 아 요. 아직 잘 모 르 겠 어 요. 소스 코드 를 보 러 가도 돼 요. 이어서 말씀 드 리 겠 습 니 다.
나 는 위 에서 기본 클래스 가 재 작성 한 addview 를 발견 했다. 처음에 나 는 자동 으로 보완 할 수 없 는 속성 값 이 바 뀐 후에 도 유용 한 의혹 이 해결 되 었 다 고 생각 했다. 그 당시 에 나 는 GridView 가 addview 를 호출 하지 않 는 다 는 것 을 알 았 다. 나 는 GridView 와 Listview 가 똑 같이 AdapterView 의 하위 클래스 이 고 AdapterView 의 addview 는 이런 것 을 알 아 보 았 다.
@Override
public void addView(View child) {
throw new UnsupportedOperationException("addView(View) is not supported in AdapterView");
}
결국
createRefreshable View 이 방법 은 사실 이 방법 에서 자동 으로 보완 할 수 없 는 속성 을 가 진 Gridview 를 만 들 었 습 니 다. 이 추상 적 인 방법 을 살 펴 보 겠 습 니 다. createRefreshable View (Context, AttributeSet)이 곳 의 Attributeset 인 자 는 레이아웃 파일 의 속성 을 전 달 했 기 때문에 이 단 계 는 완전한 GridView (자동 으로 보완 할 수 없 는 속성 포함) 를 만 들 었 습 니 다.
마지막 으로 pulltorefresh 에 대한 자신의 관점 을 말씀 드 리 겠 습 니 다. 제 가 위 에서 분석 한 바 와 같이 이 프로젝트 의 보 기 는 3 층 으로 구성 되 어 있 습 니 다. ui 최적화 만 으로 는 (적은 구성 은 여러 곳 에서 볼 수 있 는 안 드 로 이 드 ui 최적화 점) 여기 서 최적화 할 수 있 습 니 다. 그리고 하 나 는 PullTofreshGridView (프로젝트 의 드 롭 다운 새로 고침 GridView) 를 사용 하고 있 습 니 다.어떤 속성 은 자동 으로 보완 할 수 없습니다. 이렇게 사용 하 는 것 은 익숙 하지 도 않 고 불편 합 니 다. 물론 고수 들 에 게 는 이 점 을 무시 할 수 있 습 니 다. 저 처럼 게 으 른 사람 에 게 는 슬 프 고, 한 속성의 전 명 을 기억 하지 못 할 때 가 많 기 때 문 입 니 다. 순 전 히 개인 적 인 관점 으로 볼 때, 물론 자신의 능력 이 부족 해서 아직 그것 을 인식 하지 못 했 을 수도 있 습 니 다.오픈 소스 프로젝트 가 좋 습 니 다. 같은 종류의 오픈 소스 프로젝트 를 비교 해서 이 수확 을 공유 하 겠 습 니 다. 계속!!!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.