gpt4 book ai didi

android - 需要帮助来理解 onChildClick android

转载 作者:行者123 更新时间:2023-11-30 04:45:47 26 4
gpt4 key购买 nike

你好,我已经通过一个例子成功地在我的应用程序中制作了一个可扩展的 ListView ,但我真的不明白我是如何成功地获得用户点击的正确索引的,我的意思是,我真的不明白了解 childData 中的内容以及 groupData 和 childData 之间的关系。我需要一些帮助来理解这些人,我从未以这种方式见过泛型。所以这是我的问题:

1- childData 和groupData 是怎么关联的,groupData 是成childData Map 的吗?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;
}
});

感谢您的宝贵时间。

最佳答案

groupDatachildData 是两个不相关的数据结构。以下是它们以 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 ,第一组中有两个 child ,第二组中有三个 child 。

childData 中的索引对应组,其内部列表中的索引对应组内的子项。内部列表的元素是具有适配器将绑定(bind)到列表项中的 TextView 的值的映射。

希望这对您有所帮助!

关于android - 需要帮助来理解 onChildClick android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com