2015-11-03 4 views
2

Я искал высоко и низко для этой проблемы, но не смог найти что-то конкретное.Android: ListView с флажком

В принципе, у меня есть список друзей в ListView, и я пытаюсь создать группу, выбирая конкретных друзей. Для этого я создал Activity с SearchView и ListView. Поиск будет фильтровать и отображать друзей, которые я хочу добавить. Для этого я хочу использовать флажок. Все «проверенные» друзья будут переданы другому действию, где создание группы может быть завершено.

В макете деятельности есть ListView. Я написал свой собственный адаптер, и этот адаптер раздувает макет строки для ListView. Макет адаптера имеет CheckBox, который я явно добавил.

Так раскладка деятельности имеет: ListView расположения строк имеет: TextView и Checkbox

но у меня возникают проблемы с: 1. Попытки сохранить галочку при прокрутке/поиска в ListView, как вид освежает и флажок воссоздан как непроверенный - я решил это пока, поддерживая список щелчков. Я делаю это в методе getView() адаптера. 2. Попытка определить, к какой строке списка ListView принадлежит флажок. Мне понадобится это, чтобы создать группу друзей. 3. Разрешить редактировать список избранных друзей - добавлять/удалять друзей перед созданием группы.

Вот схематическое изображение: enter image description here

EDIT

Добавление в другой диаграмме, чтобы показать, как это работает.

Итак, начиная с первого занятия, я перехожу во второй, чтобы искать и добавлять друзей. Как только я выбрал своих друзей, я отправлю список обратно в свою первую деятельность, когда я нажимаю кнопку «ОК».

enter image description here

ответ

0

Существует AlertDialog метод setMultiChoiceItems() Вы можете сделать диалог со списком флажка. Может ли это помочь?

0

Я не знаю, как это работает или нет, потому что я не на своем компьютере. Сейчас я не могу отправить вам код. Но попробуйте это:

-Реализовать слушатель флажка событий (я не уверен, может быть, onCheckChanged()) и сохранить значение флажка или индекс в списке (лучше индекс использования)

2, если и имел индекс магазина, U может указать, какой флажок принадлежит какой строке. если нет, возможно, вы должны установитьTag() в строку или TextView строки, чтобы вы могли сравнить ее перед намерением следующего действия.

3 вы не сообщите нам, какой вид этой группы использовать. Трудно ответить, но я думаю, что значение u получено из getIntent(), возможно, списка, поэтому вы можете отображать его с некоторым видом с помощью кнопки удаления. Поэтому просто удалите значение из списка перед созданием группы. Чтобы добавить больше друзей, возможно, у вас должно быть намерение перечислить намерение вернуться к первому действию и установить флажок, где он установлен, и разрешить пользователю снова проверять/деактивировать его. После этого просто намеревайтесь снова на эту группу.

+1

Флажок является частью компоновки строк и так надувают адаптером. Перечень является частью макета деятельности и предан действию. – srinij

+0

что ты мне говоришь? Я пытаюсь ответить на ваш вопрос, не задавая вам вопрос. – user3547548

0

Это простая задача, выполните следующие действия:

  1. сделать файл XML макет и определить, как один флажок будет выглядеть
  2. создать представление списка.
  3. заполняет список, поскольку listview заполняется для простого текстового просмотра.

Если у вас нет достаточного представления о Populating списке, то попробуйте эту ссылку

http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html

дайте мне знать, если вы сталкиваетесь с какой-либо проблемы с этим.

счастливый код!

+0

Проблема, с которой я столкнулась, заключается в обнаружении строк, которые выбраны в списке, и отправки его обратно в действие. Поскольку флажок является частью макета строки, я не уверен, как я могу «получить» его в своем классе активности, а не в классе адаптера. – srinij

+0

CheckBox checkBox = (CheckBox) findViewById (R.id.cb); checkBox.setOnCheckedChangeListener (новый OnCheckedChangeListener() { общественного недействительными onCheckedChanged (CompoundButton buttonView, булево IsChecked) { , если (IsChecked) { // выполнить логику } } }); –

+0

Возьмите коллекцию и добавьте элемент в коллекцию, когда установлен флажок, и удалите элемент из коллекции, когда флажок снят. –

1

Я, наконец, понял это.

Как уже упоминалось, я не был уверен, как передать «управление» в действие, когда флажок установлен. Это было проблемой, потому что флажок был частью макета, раздутого адаптером.

В адаптере, я установить это пройти «контроль» назад к деятельности для обработки чек на флажок:

checkbox.setOnCheckedChangeListener((SearchFriendActivity) context); 

И в SearchFriendActivity, чек на флажок может быть обращаться по:

@Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

     Log.i(TAG, "Inside onCheckedChanged"); 

     //The below code line will get the position of the row item  
     int pos = friendlistview.getPositionForView(buttonView); 

     if(pos != ListView.INVALID_POSITION) 
     { 
      //Logic Here 
     } 
    } 

Помните implements CompoundButton.OnCheckedChangeListener в деятельности.

Аккуратный маленький учебник по этому here

Смежные вопросы