Android 설계 모드 - 어댑터(Adapater) 모드
하나의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 바꾸어 인터페이스가 일치하지 않아 함께 일할 수 없었던 두 종류가 함께 일할 수 있도록 한다.설명: A와 b는 원래 함께 일할 수 없었는데, a와 함께 작업을 해야 정상적으로 작동할 수 있었는데, 현재 b는 어댑터를 통해 a로 전환되어 A.
A.setAdapter(new Adapter(B)).
분류하다
예를 들어 우리 프로젝트에서 TabLayout을 사용합니다.필요한itemView는 각양각색이다.TabLayout은 각 그룹의 Tab이 하나의 View로 돌아가는 것을 알기만 하면 된다. 다른 것은 관심을 필요로 하지 않는다.그러나 우리가 제공할 수 있는 데이터는 String이나 icon 등 흩어진 데이터뿐인데 어떻게 조립합니까?ListView를 모방하다.
//
public interface IAdapter {
// itemView
View getView(int position);
//
int getCount();
}
public class MyTabLayout {
IAdapter mAdapter;
public void setAdapter(IAdapter adapter){
this.mAdapter = adapter;
draw();
}
public void draw(){
for (int i = 0; i < mAdapter.getCount(); i++) {
// itemView,
View itemView = mAdapter.getView(i);
}
}
}
//세부 어댑터
public class TabAdapter implements IAdapter{
List mTabBeans; //
public TabAdapter(@NonNull List tabBeans){
mTabBeans = tabBeans;
}
@Override
public View getView(int position) {
// View, ( )
TextView view = null;
return view;
}
@Override
public int getCount() {
return mTabBeans.size();
}
}
//호출
List tabBeans = new ArrayList<>();
for (int i = 0; i < 3; i++) {
tabBeans.add(new TabBean();
}
IAdapter adapter = new TabAdapter(tabBeans);
tabLayout.setAdapter(adapter);
위에서 TabAdapter를 통해 원래의 데이터List를 MyTabLayout에 필요한itemView로 변환합니다.클래스 적합은 계승 방식을 통해 적합한데 자바에서는 단지 계승만 할 수 있다. 이런 방식은 유연성이 부족하기 때문에 일반적으로 사용하지 않는다. 여기는 말하지 않겠다.
총괄: 문법이 고정적이지 않고 관건은 사상을 이해하는 것이다. 장단점에 대해서는 사용할 때 체득할 수 있고 인상이 더욱 깊을 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.