Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助了解onChildClick android吗_Android - Fatal编程技术网

需要帮助了解onChildClick android吗

需要帮助了解onChildClick android吗,android,Android,您好,我通过一个示例和很多努力,成功地在我的应用程序中创建了一个可扩展的列表视图,但我真的不明白我是如何成功地获得用户单击的正确索引的,我的意思是,我真的不知道childData中包含什么以及groupData和childData之间的关系。我需要一些帮助来理解这些家伙,我从来没有见过这样的泛型。下面是我的问题: 1-childData和groupData是如何相互关联的,groupData是否进入childData映射? 2-如何String selectedWord=childData.ge

您好,我通过一个示例和很多努力,成功地在我的应用程序中创建了一个可扩展的列表视图,但我真的不明白我是如何成功地获得用户单击的正确索引的,我的意思是,我真的不知道childData中包含什么以及groupData和childData之间的关系。我需要一些帮助来理解这些家伙,我从来没有见过这样的泛型。下面是我的问题:

1-childData和groupData是如何相互关联的,groupData是否进入childData映射? 2-如何
String selectedWord=childData.get(groupPosition).get(childPosition).get(NAME)
在listView中获取正确的单词和标题(或组)

代码如下:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.expandable_list_layout);

        DBManager db = new DBManager(getApplicationContext());

        List<String> header = db.selectAllCategories();
        List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
        final List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();

        for (String category : header) {
            Map<String, String> curGroupMap = new HashMap<String, String>();
            groupData.add(curGroupMap);
            curGroupMap.put(NAME, category);
            List<String> categoryWords = db.selectWordsFromCategory(category);

            List<Map<String, String>> children = new ArrayList<Map<String, String>>();
            for (String word : categoryWords) {
                Map<String, String> curChildMap = new HashMap<String, String>();
                children.add(curChildMap);

                curChildMap.put(NAME, word);
            }
            childData.add(children);
        }

        //create SimpleExpandableListAdapter object...

        lv.setOnChildClickListener(new OnChildClickListener() {

            public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {

//How does the below code works? 
//How can i get the group value from the childData map
//i thought childData had only childs in it?
                String selectedWord = childData.get(groupPosition).get(childPosition).get(NAME);

                Log.i("You clicked here:", selectedWord)
                return false;
            }
        });
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.可扩展列表布局);
DBManager db=newdbmanager(getApplicationContext());
列表标题=db.selectAllCategories();
List groupData=new ArrayList();
最终列表childData=new ArrayList();
用于(字符串类别:标题){
Map curGroupMap=newhashmap();
groupData.add(curGroupMap);
curGroupMap.put(名称、类别);
List categoryWords=db。从类别(category)中选择单词;
List children=new ArrayList();
for(字符串字:categoryWords){
Map curChildMap=newhashmap();
添加(curChildMap);
curChildMap.put(名称、单词);
}
添加(子项);
}
//创建SimpleExpandableListAdapter对象。。。
lv.setOnChildClickListener(新的OnChildClickListener(){
公共布尔onChildClick(ExpandableListView父视图、视图v、int-groupPosition、int-childPosition、长id){
//下面的代码是如何工作的?
//如何从childData映射中获取组值
//我以为childData里面只有孩子?
String selectedWord=childData.get(groupPosition).get(childPosition).get(NAME);
Log.i(“您单击此处:”,selectedWord)
返回false;
}
});

谢谢您的时间。

groupData
childData
是两个不相关的数据结构。下面是一个JSONey表示法的内容示例,以了解它们的作用:

groupData = [{"label": "Group 1" }, {"label" : "Group 2"}]
childData = [
  [{"label" : "Child 1.1"}, {"label" : "Child 1.2"}],
  [{"label" : "Child 2.1"}, {"label" : "Child 2.2"}, {"label" : "Child 2.3"}]
]
若您的适配器像这样查看数据结构,那个么您将得到两个组的可扩展listview,第一个组中有两个子组,第二个组中有三个子组

childData
中的索引对应于组,其内部列表中的索引对应于组内的子级。内部列表的元素是带有值的映射,适配器将绑定到列表项中的文本视图


希望这有帮助!

groupData
childData
是两个不相关的数据结构。下面是一个JSONey表示法中的内容示例,以了解它们的作用:

groupData = [{"label": "Group 1" }, {"label" : "Group 2"}]
childData = [
  [{"label" : "Child 1.1"}, {"label" : "Child 1.2"}],
  [{"label" : "Child 2.1"}, {"label" : "Child 2.2"}, {"label" : "Child 2.3"}]
]
若您的适配器像这样查看数据结构,那个么您将得到两个组的可扩展listview,第一个组中有两个子组,第二个组中有三个子组

childData
中的索引对应于组,其内部列表中的索引对应于组内的子级。内部列表的元素是带有值的映射,适配器将绑定到列表项中的文本视图

希望这有帮助