【问题标题】:Can I make a ListView item not selectable?我可以使 ListView 项目不可选吗?
【发布时间】:2011-02-26 11:22:19
【问题描述】:

我正在实现一个无穷无尽的 ListView(就像在 Twitter 应用程序中一样)。我想让最后一个项目不可选。因此,如果选择了倒数第二个项目并且我用轨迹球向下滚动,则不会发生任何事情。我尝试设置 android:focusable="false" 和 android:cickable="false" 但我没有注意到任何变化。

【问题讨论】:

  • 请将唯一的答案添加为正确的!

标签: android android-listview


【解决方案1】:

这很简单,在您的适配器中,您可以覆盖方法 isEnabled(int position) 并为该项目返回 false。

【讨论】:

  • 令人震惊的是,BaseExpandableListAdapter 没有这个方法 :(
  • 实际上它不会有太大帮助(您也可以在 getView() 中为此类项目执行 convertView.setEnabled(false) )。但它可能有自己的项目选择器,就像我的情况一样,对于普通项目,它有橙色的 bg 选择器,对于禁用的一个 - 灰色的 bg。所以它在视觉上保持可点击。但是,如果您另外添加一些复选框或使其不可见的东西,以便它会拦截焦点,那么它就像不可点击。
  • 感谢您的帮助,在我的情况下,我不希望一个项目触发动作模式,所以每次选择该项目时,我只调用从 onCreateActionMode 保存的 mode.finish()
  • Override ArrayAdapter 的 isEnabled() 方法将整个 View 设置为 DISABLED,因此如果在 ListView(或其子项/项)中使用任何 ColorStateList,则将使用 Disabled 颜色而不是 Enabled 颜色。
【解决方案2】:

如果您使用自定义数组适配器,只需覆盖此方法。

@Override
public boolean isEnabled(int position) {
    return false;
}

【讨论】:

    【解决方案3】:

    如果您想在不需要自定义适配器的情况下获得相同的效果,您可以让 OnClickListener 在点击时忽略该项目,然后为该项目的视图设置纯色背景色,以便在点击时不会突出显示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      相关资源
      最近更新 更多