ListView选中的Item在ListView获取焦点和没获取焦点时改变背景色?

如题,电视盒子上的开发,只能通过焦点去控制

或者这么问:

如何在程序中获取当前ListView选中的Item的position?

并不是onItemSelected,而是这个操作已经进行了之后,焦点要离开ListView,这时候要更新已选中的Item的背景色,是在不知道怎么办

阅读 8.7k
5 个回答

我根据你的描述
1.你是不是想点击listview 的item时 设置被点击时的一瞬间的效果
2.还是像新闻一样点击了 记录所有被点击的item 改变颜色。
如何是前者就只要使用 再drawable 中创建XML 使用selector
后者的话 我也没做过这类的 不过我自己的思想是 你做个标记 根据标记改变item背景颜色 这个应该可以实现的
或者查看listview 是否提供了相应的方法

listView.setOnItemSelectedListener

不是有 state_focused 吗?这个有试过吗?

  listView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (v.getId() == R.id.listView && !hasFocus) {
                    //updateDatas()更新已选中的Item的背景色
                    adapter.updateDatas();

                    adapter.notifyDataSetChanged();
                }
            }
        });
getListView().setOnKeyListener(this);

 @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {

        // Make the newly clicked item the currently selected one.
        if(event.getAction()==KeyEvent.ACTION_UP) {
            int currentItemPosition = this.getSelectedItemPosition();
            Log.d("stl", "onKey position: " + currentItemPosition);
            //do what you want
        }
        return false;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题