打包位置与平面位置之间的区别 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 或组)。就像这张图片中显示的那样
而打包位置是一个 long,它具有很少的值,如视图类型(child 或组)和使用二元运算符编码的视图的平面位置(如 and &
,或 |
, 移动 <<
或 >>
).
我对可扩展列表视图的平面位置和打包位置感到困惑。我在 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 或组)。就像这张图片中显示的那样
而打包位置是一个 long,它具有很少的值,如视图类型(child 或组)和使用二元运算符编码的视图的平面位置(如 and &
,或 |
, 移动 <<
或 >>
).