【问题标题】:Custom ListView: separator entries ignore settings自定义 ListView:分隔条目忽略设置
【发布时间】:2011-11-04 11:15:54
【问题描述】:

我创建了一个带有分隔符的自定义 ListView(使用 this 教程)。它看起来和工作正常,但分隔符仍然是可点击的、可聚焦的,并且能够获取从中调用的上下文菜单。所以我试着“让他们闭嘴”:

...
case TYPE_SEPARATOR:
    convertView.setFocusable(false);
    convertView.setClickable(false);
    convertView.setLongClickable(false);
    break;
        }

return convertView;

但他们完全忽略了这些设置!出于测试目的,我使用了covertView.setBackground(Color.MAGENTA),它运行良好。有人知道可能出了什么问题吗?

【问题讨论】:

  • 你在用lstView.setOnItemclickListener()
  • 我当然知道,这不是问题!列表中的所有条目都可以点击,我需要的是限制分隔符响应点击和长按。
  • 你可以setOnClickListener();convertView 里面的getView()

标签: android listview custom-controls list-separator


【解决方案1】:

假设您的适配器是实现 BaseAdapter(例如 ArrayAdapter)的适配器,请覆盖适配器中的 isEnabled() 方法。

@Override
public boolean isEnabled(int position) {
    if (getItemViewType(postion) == TYPE_SEPARATOR) {  // method taken from example
        return false;
    }
    return super.isEnabled(position);
}

要跟踪哪些项目是分隔符,哪些不是,请保留一个 ArrayList 或其他一些可以跟踪的集合。

【讨论】:

  • 我更新了代码以使用教程中指定的方法。
猜你喜欢
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
相关资源
最近更新 更多