需要帮助了解onChildClick android吗
您好,我通过一个示例和很多努力,成功地在我的应用程序中创建了一个可扩展的列表视图,但我真的不明白我是如何成功地获得用户单击的正确索引的,我的意思是,我真的不知道childData中包含什么以及groupData和childData之间的关系。我需要一些帮助来理解这些家伙,我从来没有见过这样的泛型。下面是我的问题: 1-childData和groupData是如何相互关联的,groupData是否进入childData映射? 2-如何需要帮助了解onChildClick android吗,android,Android,您好,我通过一个示例和很多努力,成功地在我的应用程序中创建了一个可扩展的列表视图,但我真的不明白我是如何成功地获得用户单击的正确索引的,我的意思是,我真的不知道childData中包含什么以及groupData和childData之间的关系。我需要一些帮助来理解这些家伙,我从来没有见过这样的泛型。下面是我的问题: 1-childData和groupData是如何相互关联的,groupData是否进入childData映射? 2-如何String selectedWord=childData.ge
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
中的索引对应于组,其内部列表中的索引对应于组内的子级。内部列表的元素是带有值的映射,适配器将绑定到列表项中的文本视图
希望这有帮助