AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案

本人大二,最近在写一个Android机顶盒的小项目,遇到了这样一个问题。由于App的布局复杂,导致ListView用遥控器获取其Item焦点时变得很卡很慢。需要不断点击上下键才能移动焦点。看了下Logcat,发现焦点每移到最后一个时,总是”can’t find view with Id 1/2/3/4”,试了网上无数种解决方案还是不行。

后来发现,自己为每个Item.setFocusable(true)的绑定方式是有问题的,会导致android系统在ListView里面遍历view的速度很慢。因为当我把Item.setFocusable(true)给注释掉时,ListView非常流畅

最后的解决方案是,直接在Listview做一个全局的绑定来解决问题。

ListViewItem绑定问题解决方案

ListView 配置如下

bg_button_focused.xml

ListView获取Item的焦点问题

当ListView全局绑定焦点后,又有一个问题来了,当你按到遥控器上的确认键时,不会有点击效果。

之前的配置文件如下

即使pressed设置为true还是没有作用,因此我是自己实现了一个选中效果,具体代码如下:

classifyListView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView> parent, View view,

int position, long id) {

if (position != clickPosition) {

clickPosition = position;

}

adapter.notifyDataSetChanged();

}

});

@Override

public View getView(final int position, View convertView,

ViewGroup parent) {

LayoutInflater inflater = LayoutInflater.from(STBMainActivity.this);

convertView = inflater.inflate(R.layout.item_classify, null);

final TextView tv = ((TextView) convertView

.findViewById(R.id.tv_item_classify));

tv.setText(InfoConfig.info.class_list.get(position).name);

tv.setBackgroundResource(R.drawable.bg_button_focused);

if (position == clickPosition) {

tv.setBackgroundColor(STBMainActivity.this.getResources().getColor(R.color.purple));

}

return convertView;

}

实现起来非常简单。

希望这篇文章能帮助到大家,毕竟目前AndroidTV开发技术类的文章还是比较少的,请各位多多指正!

android 机顶盒 view 焦点,AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案...相关推荐

  1. android列表项点击事件,Android 开发 tips(2):监听 Listview 列表项点击事件

    Android 开发 tips(2):监听 Listview 列表项点击事件 (这篇和上篇本来是应该一起写的,但是太过冗长,附链接:[SimpleAdapter 在 Listview 中的应用] ht ...

  2. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  3. Android DataBinding 入门了解 到实现一个buttton的点击事件

    为了更好的学习mvvm 这里从新学习databinding.... 1 首先在app下面的Gradle 里面的android 里面 添加 dataBinding {enabled = true} 如下 ...

  4. 安卓java浮层不响应点击事件,Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码...

    Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置LayoutParams(android.view.Wind ...

  5. Android通过MotionEvent仿真手指在屏幕单次点击事件

    Android通过MotionEvent仿真手指在屏幕单次点击事件 Android的View有一个方法performClick(),可人工模拟用户在手机屏幕上的点击事件,这次换一种方法,通过代码制造M ...

  6. Android获取view焦点方向,android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)...

    final int[] location = new int[2]; view.getLocationOnScreen(location); final int[] location = new in ...

  7. android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)

    在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...

  8. ListView和条目点击事件、条目长按事件

    step1:创建一个LinearLayout线性布局,属性值为vertical 里面写一个ListView列表控件 <ListViewandroid:id="@+id/listView ...

  9. listview 模仿用户点击事件。

    正确的方法 gvFlow.post(new Runnable() {@Overridepublic void run() {gvFlow.performItemClick(gvFlow.getChil ...

最新文章

  1. numpy meshgrid用法
  2. 用servlet校验密码2
  3. 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
  4. 求矩阵中各列数字的和
  5. android切换线程的方法,android 主线程切换方法
  6. 耗纸古文风之四--登高
  7. 八卦图php怎么做,揭秘伏羲是如何画出神奇的八卦图的?
  8. 读懂LaTeX中cls文件
  9. 【新年快乐】2022年跨年钟声即将敲响,2021终将成为历史
  10. 快速学习OSG(2)——光照
  11. HTML5 Canvas 绘制加拿大枫叶旗
  12. 【笔记】SQL查询语句的基本使用方法
  13. windows10安装配置vim
  14. 云计算概念 IaaS PaaS SaaS
  15. C++ 魔兽世界之二:装备
  16. 直流马达驱动_ADC_PWM加减速(STM32F4 CubeMX)
  17. 三创赛历年优秀作品资料整理
  18. 获取已安装设备的高级信息
  19. 终身伴侣(两个人的网站)代码+效果演示(文末源码地址)
  20. php对接AliGenie天猫精灵服务器控制智能硬件esp8266③ 渗入熟悉AliGenie 对接协议,揭开第三方云平台是如何让天猫精灵是发送消息到私有服务器的!

热门文章

  1. 5分钟入门Lindorm SearchIndex
  2. 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治
  3. 刚刚,阿里开源 iOS 协程开发框架 coobjc!
  4. 【 CDN 最佳实践】CDN 命中率优化思路
  5. HTTPS 协议到底比 HTTP 协议多些什么?
  6. 云网一体,“湘遇湘融 | 移动云TeaTalk·长沙站 启动倒计时
  7. 打破云原生时代存储瓶颈,SmartX 发布 K8s 云原生存储 IOMesh
  8. 一文带你了解混淆矩阵!
  9. 云计算风起云涌,超融合恰逢其时!
  10. 物联网避坑 3 大指南!