AndroidTV:ObjectAdapter, Presenter
15451 단어 Android
개발 환경: Android Studiov08.3
Blog: Yuki의 꺾임: 안드로이드TV: ObjectAdapter,Presenter
Introduction
Android leanback support library에는 미디어 내용을 표시하는 API가 있습니다.
여기 설명
ObjectAdapter
과Presenter
.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를 설정하는 주요 방법은 다음과 같습니다.// 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는 다음과 같습니다.
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)을 에 바인딩
TextView
onCreateViewHolder(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
Reference
이 문제에 관하여(AndroidTV:ObjectAdapter, Presenter), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuki_312/items/2080cd05a3b45a4110fb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)