Android:如何根据某些条件

时间:2016-01-23 08:09:05

标签: android listview android-checkbox

我有一个自定义列表视图,列表视图的每一行都包含一个复选框和一个文本字段。单击列表视图任何行中的任何复选框都应禁用其他复选框。如何实现此目的。

4 个答案:

答案 0 :(得分:0)

声明一个复选框的数组列表。 在getView方法中的自定义适配器中:

将复选框放在arraylist中。

 if(your condition==true) {

    for(CheckBox c: lsitOfCheckBox){
        c.setEnabled(false);
    }

 } 

答案 1 :(得分:0)

在getView方法中的自定义适配器中:

if(your condition==true){
      checkBox.setEnabled(false);
} else {
      checkBox.setEnabled(true);
}

答案 2 :(得分:0)

首先,您应该使用Recycler视图,它比listview更好,更实用。

您需要具有从BaseAdapter扩展的自定义适配器类的待办事项。

您需要让适配器的列表列表进行迭代。在自定义模型中,您需要添加名为private boolean selected'的新字段。

然后,您需要为适配器的getview()方法中的复选框定义onclick侦听器。

然后在onclicklistener.onclick方法中,您应该获得所点击项目的位置。并迭代所有数据并设置'item.selected = false;' 并且只设置list[clickPosition].selected = true;

然后拨打notifyDataSetChanged();

如果不发布更多数据,我希望你很清楚。

答案 3 :(得分:0)

首先,我建议使用RecyclerView,我会回答ListView的问题,但实际上解决方案的方式都是相似的。

假设您正在使用BaseAdapter中的ViewHolder pattern。在你的getView函数中设置一个onCheckedChangedListener,在里面创建一个函数,在实现你的适配器isListChecked的接口的类中设置一个setListChecked布尔值,应该类似于:

cbListItem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
           myInterface.setListChecked(isChecked);
           notifyDatasetChanged();
       }
   }
);     

在getView中,您还需要检查isListChecked布尔值并将其设置为CheckBox状态