打包位置与平面位置之间的区别 android 可扩展列表视图

Difference between packed position vs flat position android expandable listview

我对可扩展列表视图的平面位置和打包位置感到困惑。我在 Google 上搜索,但我找到的是

Flat list position: The position used by ListView and its adapters

Packed position: A long that "packs" (bit twiddling) what type of position (group, child, or null for headers/footers) as well as the position value(s) (group/child values)

但是我还是不能完全理解。如果有人用示例向我解释,那就太好了。

可扩展列表视图:

可扩展列表视图用于按类别对列表数据进行分组。它具有在用户触摸 header.

时展开和折叠组的功能

为了创建可展开的列表视图,我们需要三个 xml 布局文件。第一个用于主列表视图,第二个用于列表视图组项目,第三个用于列表视图 child 项目。

创建一个名为 ExpandableListAdapter.java 的新 class 文件,并从 BaseExpandableListAdapter 扩展它。 class 提供呈现列表视图所需的方法。

getGroupView() – Returns view for the list group header
getChildView() – Returns view for list child item

要创建适配器,您必须像下面这样为 ExpandableListView 创建 DataList:

* Preparing the list data
     */
    private void prepareListData() {
        listDataHeader = new ArrayList<String>();
        listDataChild = new HashMap<String, List<String>>();

        // Adding child data
        listDataHeader.add("OS");
        listDataHeader.add("LANGUAGE");
        listDataHeader.add("IDE");

        // Adding child data
        List<String> OS= new ArrayList<String>();
        OS.add("Windows");
        OS.add("Linux");
        OS.add("Android");
        OS.add("MAC");


        List<String> LANGUAGE= new ArrayList<String>();
        LANGUAGE.add("JAVA");
        LANGUAGE.add("C");
        LANGUAGE.add("C++");
        LANGUAGE.add("PHP");
        LANGUAGE.add("objective c");
        LANGUAGE.add("ROR");

        List<String> IDE= new ArrayList<String>();
        IDE.add("Android Studio");
        IDE.add("Eclipse");
        IDE.add("NetBeans");
        IDE.add("xcode");


        listDataChild.put(listDataHeader.get(0), OS); // Header, Child data
        listDataChild.put(listDataHeader.get(1), LANGUAGE);
        listDataChild.put(listDataHeader.get(2), IDE);
    }

请查找更多详细信息以了解可扩展列表视图

http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

自己找到解决方案:

平面位置是屏幕上视图的索引,无论是什么类型(child 或组)。就像这张图片中显示的那样

image

而打包位置是一个 long,它具有很少的值,如视图类型(child 或组)和使用二元运算符编码的视图的平面位置(如 and &,或 |, 移动 <<>>).