У меня есть настроенное представление списка, и каждая строка списка содержит флажок и текстовое поле. Нажав на любой флажок в любой строке списка, вы должны отключить другие флажки. Как это сделать.Android: как отключить флажок в представлении списка на основе какого-то условия
ответ
объявить список элементов списка. Внутри вашего пользовательского адаптера в методе getView:
положить флажок внутри arraylist.
if(your condition==true) {
for(CheckBox c: lsitOfCheckBox){
c.setEnabled(false);
}
}
Внутри пользовательского адаптера в методе GetView:
if(your condition==true){
checkBox.setEnabled(false);
} else {
checkBox.setEnabled(true);
}
Прежде всего, вы должны использовать вид ресайклер, это намного лучше и практичнее, чем ListView.
Для этого вам необходимо иметь собственный класс адаптеров, который распространяется от BaseAdapter.
Вам нужен список списка для вашего адаптера для повторного перебора. И в вашем custommodel вам нужно добавить новое поле под названием private boolean selected'
.
Затем вам необходимо определить onclick listeners для флажка в методе getview()
адаптера.
Затем в методе onclicklistener.onclick
вы должны получить позицию щелкнутого элемента. И перебирать все ваши данные и установить 'item.selected = false;'
и установить только list[clickPosition].selected = true;
Затем вызовите notifyDataSetChanged();
Я надеюсь, что это ясно для вас, если не пост еще некоторые данные.
Сначала я предлагаю использовать RecyclerView, я отвечу на вопрос о ListView, но в любом случае решения будут похожи.
Предполагая, что вы используете 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
boolean и установите это как состояние CheckBox
проверьте здесь - http://stackoverflow.com/questions/9844061/android-how-do-enable-disable-a-checkbox-depending-on-a- radio-button-being-s – Tasos