如何从Fragment中看出我们的孩子观点状态

时间:2014-07-11 16:42:55

标签: android

enter image description here enter image description here请参阅图片以更好地理解问题。

我有一个带有ExpandableListView和几个按钮的片段。

ExpandableListView - >将ListView作为每个子元素 - > ListView中的每一行都是ImageView,TextView和一个复选框的组合。 ExpandableListView由CustomAdapter填充(它是Fragment中的一个单独的java文件)

问题是 - 我如何从按钮中找出ExpandableListView的哪个Child。

  • 我可以将信息存储在SharedPreferences中,但我可能必须使用复杂的Java Collections对象。我想避免这种情况。
  • 片段和适配器是两个独立的文件,据我所知,没有系统的回调。
  • 什么是标准方式 - 片段能够访问其每个子视图的信息?

欢迎任何帮助或指示!!提前谢谢。

2 个答案:

答案 0 :(得分:0)

创建一个监听器回调接口,如:

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

然后,让你的Fragment实现这个监听器:

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);

答案 1 :(得分:0)

  1. 获取ExpandableListView中的onCreateView()并存储对其的引用。

  2. 在按钮的匿名onClick()处理程序中,在步骤1中存储的引用上调用getSelectedPosition()