Android开发 - (适配器)ArrayObjectAdapter类与Presenter实现类关联的作用解析

ListRowPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListRowPresenter());
  • 用途用于展示 ListRow 中的水平滚动列表项

ImageCardViewPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ImageCardViewPresenter());
  • 用途用于显示带有图像和标题的卡片视图。通常用于媒体内容展示

GridItemPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new GridItemPresenter());
  • 用途用于在网格视图中显示项目适用于需要将项组织成网格的场景

VerticalGridPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VerticalGridPresenter());
  • 用途用于垂直网格视图常用于显示需要垂直滚动的网格数据

CardPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CardPresenter());
  • 用途用于显示带有卡片样式的项适用于简洁的视觉效果

AbstractCardPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CustomCardPresenter());
  • 用途用于创建自定义卡片视图的基类。开发者通常扩展此类来实现自定义卡片效果

PlaybackControlsRowPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new PlaybackControlsRowPresenter());
  • 用途用于在播放界面上显示控制按钮(如播放、暂停、停止等)。通常用于视频播放界面

PlaybackOverlayFragmentPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new PlaybackOverlayFragmentPresenter());
  • 用途用于显示视频播放覆盖层的 Presenter。通常在播放视频时显示控制界面

MoviePresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new MoviePresenter());
  • 用途通常是一个自定义的 Presenter用于显示电影或其他媒体项目。根据具体的实现,它可能包括图像标题和其他媒体信息

CompactTitlePresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CompactTitlePresenter());
  • 用途用于显示简化的标题视图。适合空间有限需要简洁展示的场景

TextPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new TextPresenter());
  • 用途用于显示仅包含文本的简单视图项。适合展示简单的文本数据

ListPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ListPresenter());
  • 用途用于显示列表视图中的项目。可以是简单的列表自定义列表

VerticalGridPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new VerticalGridPresenter());
  • 用途用于在垂直网格中显示项目。适用于需要显示多个项目的网格视图

SinglePresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new SinglePresenter());
  • 用途用于显示单个项。通常用于显示不需要滚动或网格的视图

GridPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new GridPresenter());
  • 用途用于在网格中显示项目。适合展示多个项目的场景

ImagePresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ImagePresenter());
  • 用途用于仅显示图像的视图项

HorizontalGridPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new HorizontalGridPresenter());
  • 用途用于水平网格视图

AbstractDetailsDescriptionPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new AbstractDetailsDescriptionPresenter() {
    @Override
    protected void onBindDescription(ViewHolder viewHolder, Object item) {
        // 绑定详细描述到视图
    }
});
  • 用途:用于展示详细描述的视图,如电影电视节目的详细信息

GuidedStepPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new GuidedStepPresenter());
  • 用途:用于分步引导界面,适合在设置向导等场景中使用

SettingsPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new SettingsPresenter());
  • 用途用于展示设置界面的项

PosterPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new PosterPresenter());
  • 用途:用于显示具有大图像简要文本的项目,类似于海报视图

ActionPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ActionPresenter());
  • 用途:用于展示带有行动按钮的视图,适合包含操作项的界面

FocusHighlightPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new FocusHighlightPresenter());
  • 用途:用于处理焦点高亮的视图,允许自定义焦点状态下的视图样式

SubtitlePresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new SubtitlePresenter());
  • 用途:用于显示带有字幕的视图,通常用于视频播放场景

CompactDetailsDescriptionPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CompactDetailsDescriptionPresenter());
  • 用途:用于展示紧凑的详细描述,适合在空间有限的情况下展示重要信息

ActionPresenterSelector

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ActionPresenterSelector());
  • 用途:用于选择不同的 ActionPresenter 实现根据不同的上下文展示不同的行动按钮

ImageCardPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ImageCardPresenter());
  • 用途用于展示图像卡片,适合需要展示图像简要文字的场景

DetailsOverviewRowPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new DetailsOverviewRowPresenter());
  • 用途用于展示详细信息视图的行,包含图像标题详细描述,适合详细信息页

ImageCardView

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new ImageCardView());
  • 用途:用于显示图像卡片,包括图像一些基本文本信息

SearchBarPresenter

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new SearchBarPresenter());
  • 用途:用于展示搜索栏的视图,这对于需要搜索功能的应用非常有用

AbstractPresenter

import androidx.leanback.widget.ArrayObjectAdapter;
import androidx.leanback.widget.AbstractPresenter;

// 示例:你需要继承 AbstractPresenter 并实现具体的逻辑
public class CustomPresenter extends AbstractPresenter {
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        // 创建和返回视图
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, Object item) {
        // 绑定数据到视图
    }

    @Override
    public void onUnbindViewHolder(ViewHolder viewHolder) {
        // 清理视图
    }
}

ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CustomPresenter());
  • 用途:一个抽象的基类,你可以从这个类继承并实现自己的 Presenter。这通常用于创建完全自定义的视图

自定义 Presenter

import androidx.leanback.widget.Presenter;
import android.view.ViewGroup;
import android.view.View;
import android.widget.TextView;

public class CustomPresenter extends Presenter {
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        // 创建一个 TextView 用于显示内容
        TextView textView = new TextView(parent.getContext());
        return new ViewHolder(textView);
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, Object item) {
        // 绑定数据到视图
        TextView textView = (TextView) viewHolder.view;
        textView.setText(item.toString());
    }

    @Override
    public void onUnbindViewHolder(ViewHolder viewHolder) {
        // 清理视图,一般不需要写什么东西
    }
}

// 使用自定义 Presenter
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CustomPresenter());
  • 可以创建自定义的 Presenter 来实现特定的需求自定义 Presenter 允许你完全控制数据如何显示以及视图的交互行为。选择合适的 Presenter 类型自定义实现可以帮助你创建更灵活符合用户需求的界面

高级自定义 Presenter

import androidx.leanback.widget.Presenter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.content.Context;

public class DynamicPresenter extends Presenter {
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent) {
        Context context = parent.getContext();
        TextView textView = new TextView(context);
        textView.setPadding(16, 16, 16, 16);
        return new ViewHolder(textView);
    }

    @Override
    public void onBindViewHolder(ViewHolder viewHolder, Object item) {
        TextView textView = (TextView) viewHolder.view;
        textView.setText(item.toString());

        // 动态更新视图,例如根据数据变化更改背景色
        textView.setBackgroundColor(item.hashCode() % 2 == 0 ? 0xFF0000FF : 0xFFFF0000);
    }

    @Override
    public void onUnbindViewHolder(ViewHolder viewHolder) {
        // 清理视图
    }
}

// 使用动态更新的 Presenter
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new DynamicPresenter());
  • 如果需要显示具有特殊样式的项目,例如具有不同颜色和样式的文本和图像,可以创建自定义的 Presenter

总结

ArrayObjectAdapter 可以与多种 Presenter 实现类一起使用每种实现类都具有特定的显示方式和用途。通过实例化不同的 Presenter 类,您可以控制数据项在界面上的展示效果满足各种设计需求

posted @ 2024-08-03 16:14  阿俊学JAVA  阅读(27)  评论(0编辑  收藏  举报