Android中ExpandableListView的使用
Android中ExpandableListView的使用
ExpandableListView是Android中可以實現下拉list的一個控件,具體的實現方法如下:
首先:在layout的xml文件中定義一個ExpandableListView
view plaincopy to clipboardprint?定義兩個List,用來存放控件中Group/Child中的String
view plaincopy to clipboardprint?對這兩個List進行初始化,并插入一些數據
view plaincopy to clipboardprint?
定義ExpandableListView的Adapter
view plaincopy to clipboardprint?
最后,給定義好的ExpandableListView添加上Adapter
view plaincopy to clipboardprint?
運行即可見效果~~~
?
----------------------------------------------------------------------------------------------------------------
Android版手風琴(ExpandableListView)
先看效果,過癮一番。
?
?
?源碼下載:http://files.cnblogs.com/salam/WidgetDemo.rar
?
ExpandableListView是Android中的手風琴,本人感覺效果相當棒。
一、ExpandableListView介紹
一個垂直滾動的顯示兩個級別(Child,Group)列表項的視圖,列表項來自ExpandableListAdapter 。組可以單獨展開。
1.重要方法
expandGroup(int groupPos) :在分組列表視圖中展開一組,
setSelectedGroup(int groupPosition) :設置選擇指定的組。
setSelectedChild(int groupPosition, int childPosition, boolean shouldExpandGroup) :設置選擇指定的子項。
getPackedPositionGroup(long packedPosition) :返回所選擇的組
getPackedPositionForChild(int groupPosition, int childPosition) :返回所選擇的子項
getPackedPositionType(long packedPosition) :返回所選擇項的類型(Child,Group)
isGroupExpanded(int groupPosition) :判斷此組是否展開
2.代碼:
ExpandableListContextMenuInfo menuInfo=(ExpandableListContextMenuInfo)item.getMenuInfo();
??String title=((TextView)menuInfo.targetView).getText().toString();
??int type=ExpandableListView.getPackedPositionType(menuInfo.packedPosition);
??
??if (type==ExpandableListView.PACKED_POSITION_TYPE_CHILD) {
??int?groupPos =ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
??int?childPos =ExpandableListView.getPackedPositionChild(menuInfo.packedPosition);
二、ExpandableListAdapter
一個接口,將基礎數據鏈接到一個ExpandableListView。此接口的實施將提供訪問Child的數據(由組分類),并實例化的Child和Group。
1.重要方法
getChildId(int groupPosition, int childPosition) 獲取與在給定組給予孩子相關的數據。
getChildrenCount(int groupPosition) 返回在指定Group的Child數目。
2.代碼
?public class MyExpandableListAdapter extends BaseExpandableListAdapter {
???????? // Sample data set.? children[i] contains the children (String[]) for groups[i].
???????? public String[] groups = { "我的好友", "新疆同學", "親戚", "同事" };
???????? public String[][] children = {
???????????????? { "胡算林", "張俊峰", "王志軍", "二人" },
???????????????? { "李秀婷", "蔡喬", "別高", "余音" },
???????????????? { "攤派新", "張愛明" },
???????????????? { "馬超", "司道光" }
???????? };
????????
???????? public Object getChild(int groupPosition, int childPosition) {
???????????? return children[groupPosition][childPosition];
???????? }
???????? public long getChildId(int groupPosition, int childPosition) {
???????????? return childPosition;
???????? }
???????? public int getChildrenCount(int groupPosition) {
???????????? return children[groupPosition].length;
???????? }
???????? public TextView getGenericView() {
???????????? // Layout parameters for the ExpandableListView
???????????? AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
???????????????????? ViewGroup.LayoutParams.MATCH_PARENT, 64);
???????????? TextView textView = new TextView(ExpandableListDemo.this);
???????????? textView.setLayoutParams(lp);
???????????? // Center the text vertically
???????????? textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
???????????? // Set the text starting position
???????????? textView.setPadding(36, 0, 0, 0);
???????????? return textView;
???????? }
????????
???????? public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
???????????????? View convertView, ViewGroup parent) {
???????????? TextView textView = getGenericView();
???????????? textView.setText(getChild(groupPosition, childPosition).toString());
???????????? return textView;
???????? }
???????? public Object getGroup(int groupPosition) {
???????????? return groups[groupPosition];
???????? }
???????? public int getGroupCount() {
???????????? return groups.length;
???????? }
???????? public long getGroupId(int groupPosition) {
???????????? return groupPosition;
???????? }
???????? public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
???????????????? ViewGroup parent) {
???????????? TextView textView = getGenericView();
???????????? textView.setText(getGroup(groupPosition).toString());
???????????? return textView;
???????? }
???????? public boolean isChildSelectable(int groupPosition, int childPosition) {
???????????? return true;
???????? }
???????? public boolean hasStableIds() {
???????????? return true;
???????? }
???? }
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Android中ExpandableListView的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 由浅入深:自己动手开发模板引擎——解释型
- 下一篇: Android客户端和服务端如何使用To