Android 설계 모드 - 어댑터(Adapater) 모드

1967 단어
하나.핵심 사상
하나의 인터페이스를 클라이언트가 기대하는 다른 인터페이스로 바꾸어 인터페이스가 일치하지 않아 함께 일할 수 없었던 두 종류가 함께 일할 수 있도록 한다.설명: 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로 변환합니다.클래스 적합은 계승 방식을 통해 적합한데 자바에서는 단지 계승만 할 수 있다. 이런 방식은 유연성이 부족하기 때문에 일반적으로 사용하지 않는다. 여기는 말하지 않겠다.
    총괄: 문법이 고정적이지 않고 관건은 사상을 이해하는 것이다. 장단점에 대해서는 사용할 때 체득할 수 있고 인상이 더욱 깊을 것이다.

    좋은 웹페이지 즐겨찾기