2014-07-11 3 views
0

enter image description hereenter image description here Пожалуйста, взгляните на изображение, чтобы лучше понять вопрос.Как нарисовать статус нашего ребенка из фрагмента

У меня есть фрагмент с ExpandableListView и несколько кнопок.

В ExpandableListView -> есть ListViews как каждый дочерний элемент -> каждая строка в ListView представляет собой комбинацию ImageView, TextView и флажок. РасширяемыйListView заполняется CustomAdapter (который представляет собой отдельный файл java из фрагмента)

Вопрос: как узнать, какой дочерний элемент ExpandableListView выбран с помощью кнопки.

  • Я мог хранить информацию в SharedPreferences, но мне, возможно, придется использовать сложный объект java Collections. Я хочу избежать этого.
  • Фрагмент и адаптер - это два отдельных файла и, насколько мне известно, не имеют систематического обратного вызова.
  • Каков стандартный способ - Фрагмент, способный получить доступ к каждой информации своего детского вида?

Любые помощь или указатели приветствуются! Заранее спасибо.

+0

Как создать и установить адаптер? –

ответ

0

Создание слушателя перезвонить интерфейс, что-то вроде:

public interface ListenerChildSelected 
{ 
    public void onChildSelected(int childNum); 
} 

Затем, сделать фрагмент реализации этого слушателя:

public class FragmentTest implements ListenerChildSelected 

Затем, когда вы создать экземпляр пользовательского адаптера, передать слушателю :

//kv 3rd parameter would be listener 
CustomBaseAdapter customBaseAdapter = new CustomBaseAdapter(this, items, this); 

Затем в конструкторе вашего CustomBaseAdapter задайте элемент поле для слушателя:

public CustomBaseAdapter(Context context, ArrayList<Item> items, ListenerChildSelected listenerChildSelected) 
{ 
    mListenerChildSelected = listenerChildSelected; 
    ... 
} 

Затем, каждый раз, когда элемент проверяется, звоните:

mListenerChildSelected.onChildSelected(rowNum); 
+0

Спасибо @Karim! ваше решение практически означает, вызывая Фрагмент каждый раз, когда мы что-то делаем в адаптере (в этом случае достигается интерфейсный вызов). Это правильно ? – Deep

+0

Да Глубоко, каждый раз, когда вызывается checkbox onCheckedChange(), вы вызываете ListenerChildSelected. –

0
  1. Получить ExpandableListView в onCreateView() и хранить ссылку на него.

  2. В анонимной onClick() обработчика вашей кнопки, вызовите getSelectedPosition() по ссылке, хранящейся на шаге 1.

+0

Спасибо всем! – Deep

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