禁用listView android中复选框的更改

Posted

技术标签:

【中文标题】禁用listView android中复选框的更改【英文标题】:Disable changing of checkbox in listView android 【发布时间】:2016-04-01 06:18:13 【问题描述】:

是否可以禁用用户单击 android 中 listView 中的复选框项目?我有一个 listView 程序决定检查和不检查的内容,我不希望用户更改复选框的状态。有没有简单的方法可以做到这一点?

我尝试将 setClickable 设置为 false,但没有成功。

谢谢

【问题讨论】:

如果您不希望用户选中和取消选中它,请不要使用CheckBox。使用其他东西(例如图标)来指示选中和未选中状态。 【参考方案1】:

您不想让用户设置checkbox 的值,那么只需使用这个: checkbox.setenabled(false)xml 中的等效项

http://developer.android.com/reference/android/widget/TextView.html#setEnabled(boolean)

【讨论】:

【参考方案2】:

CommonsWare 的评论当然是正确的 - 如果用户无法实际与之交互,则不应使用复选框,这会让您的用户感到困惑。

但是,直接回答您的问题应该只是使用checkbox.setEnabled(false) 的问题。当然,您需要对每一行都执行此操作。

当然,另一种选择是使用颜色或图标来指示您的状态。背景颜色只需要列表视图上的正确颜色状态列表 (android:listSelector="@drawable/selection_state_drawable"),而对于图标,只需覆盖 getView。大致如下:

@Override
public View getView(int position, View convertView, ViewGroup parent) 
    if (convertView == null) 
        convertView = mInflater.inflate(R.layout.my_layout, parent, false);
    
    MyItemType data = getItem(position);
    ImageView checkImage = (ImageView) convertView.findViewById(R.id.state_icon);
    checkImage.setImageResource( data.isSelected()? R.drawable.ic_selected : R.drawable.ic_not_selected ) 
    return convertView;

【讨论】:

以上是关于禁用listView android中复选框的更改的主要内容,如果未能解决你的问题,请参考以下文章

Android中项目的自定义ListView点击问题

在 VB .NET 2008 Winform Listview 中禁用复选框选择

如何在 android 复选框检查更改上接收事件?

Eclipse ADT ListView 和 GridView 渲染被禁用

如何更改复选框的默认图像

如何提高(感知)使用 Android 创建复杂 ListView 的速度?