AndroidTV:ObjectAdapter, Presenter

15451 단어 Android
* 본 문서는 Android L Developer Preview 정보를 기반으로 합니다.공식 버전 변경 가능성 주의
개발 환경: Android Studiov08.3
Blog: Yuki의 꺾임: 안드로이드TV: ObjectAdapter,Presenter

Introduction


Android leanback support library에는 미디어 내용을 표시하는 API가 있습니다.
여기 설명ObjectAdapterPresenter.

Overview


Android leanback support library는 컨텐츠를 분리하고 작업을 표시하는 메커니즘을 제공합니다.
Model 및 Present 연결Presenter도 제공됩니다.
ObjectAdapter는 데이터(미디어 내용 등)와 ObjectAdapter를 포함하는 추상 클래스입니다.
BrowserFragment,DetailsFragment(또는 그 하위 클래스)의 PresenterSelector에 ObjectAdapter를 등록합니다.
Preselector는 모든 모델마다 가장 좋은 Presenter를 선택하고 Presenter가 View에 연결합니다.

Model-View-Presenter Pattern


본고는Model-View-Preesenter Pattern을 이해하면 쉽게 이해할 수 있습니다.

[MVP Pattern.]
Android TV에서는 미디어 콘텐츠는 모델을, Presenter는 Presenter를, View는 View를 지원합니다.
ObjectAdapter는 모델 및 Presenter를 해당 어댑터로 사용합니다.

APIs


ObjectAdapter

setAdapter(ObjectAdapter)

Class Overview


Adapter for leanback activities. Provides access to a data model and is decoupled from the presentation of the items via PresenterSelector.
Leanback Activity용 어댑터입니다.모델android.support.v17.leanback.widget.ObjectAdapter에 액세스하여 모델과 View를 분리할 수 있습니다.
ObjectAdapter는 추상 클래스이며 Model을 관리하는 방법을 제공하지 않습니다.PresenterSelector로 Model을 관리하는 경우 하위 클래스ArrayList를 사용합니다.
// Set Presenter
ArrayObjectAdapter adapter =
        new ArrayObjectAdapter(new MyStringPresenter());

// Add Models
adapter.add("Media Item 1");
adapter.add("Media Item 2");
adapter.add("Media Item 3");
ObjectAdapter에서 Preselector를 설정하는 주요 방법은 다음과 같습니다.
  • ObjectAdapter의 구조기 파라미터에Preselector 실례를 전달
  • ObjectAdapter의 구조기 파라미터에Presenter 실례를 전달
  • ObjectAdapter.setPresenterSelector 방법을 사용하여PresenterSelector
  • 를 설정합니다.
    // 1. Set Presenter
    ArrayObjectAdapter adapter1 = new ArrayObjectAdapter(
            new MyStringPresenter());
    
    // 2. Set PresenterSelector
    ArrayObjectAdapter adapter2 = new ArrayObjectAdapter(
            new SinglePresenterSelector(new MyStringPresenter()));
    
    // 3. Lazy initialize
    ArrayObjectAdapter adapter3 = new ArrayObjectAdapter();
    adapter3.setPresenterSelector(
            new SinglePresenterSelector(new MyStringPresenter()));
    

    Summary


    다음은 주요 API입니다.
    ObjectAdapter(PresenterSelector presenterSelector)
    : > Construct an adapter with the given PresenterSelector.
    : Adapter 초기화, Preselector 설정
    ObjectAdapter(Presenter presenter)
    : > Construct an adapter that uses the given Presenter for all items.
    : 모든 목록 항목에 대해 Adapter를 초기화합니다.내부 설정ArrayObjectAdapter.
    ObjectAdapter.DataObserver
    : > A DataObserver can be notified when an ObjectAdapter's underlying data changes.
    : SinglePresenterSelector ObjectAdapter 데이터가 변경된 경우 알림 수신 가능
    get(int position)
    : > Returns the item for the given position.
    : 매개변수DataObserver에 있는 item(Model)을 반환합니다.
    getId(int position)
    : > Returns id for the given position.
    : 매개 변수 position의 id를 반환합니다.
    getPresenter(Object item)
    : > Returns the Presenter for the given item from the adapter.
    : item(Model)에 해당하는 Presenter 반환
    setPresenterSelector(PresenterSelector presenterSelector)
    : > Set the presenter selector.
    : PresenterSelector 설정

    PresenterSelector

    position

    Class Overview


    A android.support.v17.leanback.widget.PresenterSelector is used to obtain a Presenter for a given Object.
    PresenterSelector는 객체 모델과의 Presenter를 가져오는 데 사용됩니다.
    ObjectAdapter Preser 를 선택하여 View에 Model을 바인딩합니다.
    Presenter 객체를 가져오는 데 사용되는 기본 Preselector는 다음과 같습니다.
  • ClassPresenterSelector
  • SinglePresenterSelector
  • Summary


    getPresenter(Object item)
    : > Returns a presenter for the given item.
    : 해당 item의 Presenter를 반환합니다.

    SinglePresenterSelector

    PresenterSelector ┗ android.support.v17.leanback.widget.PresenterSelector

    Class Overview


    항상 같은 Presenter를 반환합니다.Model이 모두 같은 유형일 때 사용합니다.
    public final class SinglePresenterSelector extends PresenterSelector {
        private final Presenter mPresenter;
    
        public SinglePresenterSelector(Presenter presenter) {
            mPresenter = presenter;
        }
    
        @Override
        public Presenter getPresenter(Object item) {
            return mPresenter;
        }
    }
    

    Summary


    SinglePresenterSelector(Presenter presenter)
    : > The Presenter to return for every item.
    : 모든 Model 공통 Presenter를 초기화하도록 지정합니다.
    getPresenter(Object item)
    : > Returns a presenter for the given item.
    : 지정된 item에 해당하는 Presenter를 반환합니다.항상 동일한 Presenter를 반환합니다.

    ClassPresenterSelector

    ndroid.support.v17.leanback.widget.SinglePresenterSelector ┗ android.support.v17.leanback.widget.PresenterSelector

    Class Overview


    Model 기반 컨텐츠에서 Preser 클래스를 전환하려는 경우에 사용합니다.
    Class Preselector는 android.support.v17.leanback.widget.ClassPresenterSelector를 키Class로 Presenter를 관리합니다.
    public final class ClassPresenterSelector extends PresenterSelector {
        private final HashMap<Class<?>, Presenter> mClassMap = new HashMap<Class<?>, Presenter>();
    
        public void addClassPresenter(Class<?> cls, Presenter presenter) {
            mClassMap.put(cls, presenter);
        }
    
        @Override
        public Presenter getPresenter(Object item) {
            // item.getClass() にマッチするPresenterをmClassMapから見つけ出し返却する
        }
    }
    

    Summary


    addClassPresenter(Class cls, Presenter presenter)
    : > (no description)
    : 모델 유형에 해당하는 Present 등록
    getPresenter(Object item)
    : > Returns a presenter for the given item.
    : 지정된 item에 해당하는 Presenter를 반환합니다.

    Presenter

    Map

    Class Overview


    A Presenter is used to generate Views and bind Objects to them on demand. It is closely related to concept of an RecyclerView.Adapter, but is not position-based.
    Present는 View를 생성하고 Object를 바인딩합니다.
    이것은 android.support.v17.leanback.widget.Presenter의 개념과 비슷하지만position에 기초한 것은 아니다.
    A trivial Presenter that takes a string and renders it into a TextView:
    다음은 Presenter가 수신Recyclerview.Adapter하여 보여주는 코드String입니다.
    public class StringTextViewPresenter extends Presenter {
        // This class does not need a custom ViewHolder, since it does not use
        // a complex layout.
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent) {
            return new ViewHolder(new TextView(parent.getContext()));
        }
    
        @Override
        public void onBindViewHolder(ViewHolder viewHolder, Object item) {
            String str = (String) item;
            TextView textView = (TextView) viewHolder.mView;
            textView.setText(item);
        }
    
        @Override
        public void onUnbindViewHolder(ViewHolder viewHolder) {
            // Nothing to unbind for TextView, but if this viewHolder had
            // allocated bitmaps, they can be released here.
        }
    }
    

    Summary


    주요 API는 다음과 같습니다.
    onBindViewHolder(Presenter.ViewHolder viewHolder, Object item)
    : > Binds a View to an item.
    : item(Model)을 에 바인딩TextViewonCreateViewHolder(ViewGroup parent)
    : > Creates a new View.
    : 새 뷰 생성
    onUnbindViewHolder(Presenter.ViewHolder viewHolder)
    : > Unbinds a View from an item. Any expensive references may be released here, and any fields that are not bound for every item should be cleared here.
    : View에서 item(Model)을 인도로 이동합니다.뷰에 연결되지 않은 것을 포함해서, 강제 인용은 여기에 발표해야 한다.

    Presenter.ViewHolder

    View

    Class Overview


    ViewHolder can be subclassed and used to cache any view accessors needed to improve binding performance (for example, results of findViewById) without needing to subclass a View.android.support.v17.leanback.widget.Presenter.ViewHolder 자류화할 수 있다.(기타는 일반 ViewHolder와 동일)

    Summary


    별기 사항 없음
    License:
    Portions of this page are modifications based on work created and shared by the Android Open Source Project
    and used according to terms described in the Creative Commons 2.5 Attribution License .
    "Model View Presenter GUI Design Pattern"by Google
    http://www.gwtproject.org/articles/testing_methodologies_using_gwt.html
    Licensed under Creative Commons Attribution-Share Alike 3.0 via Wikimedia Commons -
    http://commons.wikimedia.org/wiki/File:Model_View_Presenter_GUI_Design_Pattern.png#mediaviewer/File:Model_View_Presenter_GUI_Design_Pattern.png

    좋은 웹페이지 즐겨찾기