Android TV的行添加和行中数据项添加

首先需要为行(Row)创建自定义的Presenter。

Kotlin 复制代码
    private class GridItemPresenter : Presenter(){
        override fun onCreateViewHolder(parent: ViewGroup?): ViewHolder {
            val view = TextView(parent.context) // 此处以一个简单的TextView为示例,可根据需求自定义复杂的数据结构
            view.apply {
                layoutParams = ViewGroup.LayoutParams(GRID_ITEM_WIDTH, GRID_ITEM_HEIGHT) // 为单个卡片设定宽高
                isFocusable = true
                isFocusableInTouchMode = true
                setBackgroundColor(ContextCompat.getColor(context, R.color.default_background)) // 参考值#3d3d3d
                setTextColor(Color.WHITE)
                gravity = Gravity.CENTER
            }
            return Presenter.ViewHolder(view)
        }
        
        // 绑定数据,为每个view赋值
        override fun onBindViewHolder(viewHolder: ViewHolder?, item: Any?) {
            (viewHolder?.view as TextView).text = item as String
        }

        override fun onUnbindViewHolder(viewHolder: ViewHolder?) {}

    }

Presenter的作用是将View添加到Row中,类似RecyclerView的Adater。

之后使用我们自定义的Presenter,用于手动添加单个view到Row中。

Kotlin 复制代码
        // 手动添加Row
        val gridHead = HeaderItem(TabList.size.toLong(), "可手动添加项")
        // 手动添加View到Row中
        val mGridPresenter = GridItemPresenter()
        val girdRowAdapter = ArrayObjectAdapter(mGridPresenter)
        girdRowAdapter.apply { 
            add("Grid View")
            add("Error Page")
            add("Settings")
        }
        // 将我们新增的Row添加到页面的adapter
        rowsAdapter.add(ListRow(gridHead, girdRowAdapter))
相关推荐
CYRUS_STUDIO17 小时前
Frida 检测与对抗实战:进程、maps、线程、符号全特征清除
android·逆向
csj5018 小时前
安卓基础之《(28)—Service组件》
android
lhbian20 小时前
PHP、C++和C语言对比:哪个更适合你?
android·数据库·spring boot·mysql·kafka
catoop21 小时前
Android 最佳实践、分层架构与全流程解析(2025)
android
ZHANG13HAO1 天前
Android 13 特权应用(Android Studio 开发)调用 AOSP 隐藏 API 完整教程
android·ide·android studio
田梓燊1 天前
leetcode 142
android·java·leetcode
angerdream1 天前
Android手把手编写儿童手机远程监控App之JAVA基础
android
菠萝地亚狂想曲1 天前
Zephyr_01, environment
android·java·javascript
sTone873751 天前
跨端框架通信机制全解析:从 URL Schema 到 JSI 到 Platform Channel
android·前端
sTone873751 天前
Java 注解完全指南:从 "这是什么" 到 "自己写一个"
android·前端