zoukankan      html  css  js  c++  java
  • 转载 android 支持展开/收缩功能的列表控件

    ActivityMain .java

    package com.android;


    import android.app.ExpandableListActivity;
    import android.os.Bundle;
    import android.view.ContextMenu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ContextMenu.ContextMenuInfo;
    import android.widget.ExpandableListAdapter;
    import android.widget.ExpandableListView;
    import android.widget.TextView;
    import android.widget.Toast;
    import android.widget.ExpandableListView.ExpandableListContextMenuInfo;

    public class ActivityMain extends ExpandableListActivity {

     
     private ExpandableListAdapter mAdapter;
     
     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           this.setTitle("ExpandableList");
           mAdapter = new MyExpandableListAdapter(this);
           setListAdapter(mAdapter);
           registerForContextMenu(this.getExpandableListView());
        }

     
     //为列表的每一项创建上下文菜单(即长按后 呼出的菜单)
     @Override
     public void onCreateContextMenu(ContextMenu menu, View v,
       ContextMenuInfo menuInfo) {
      menu.setHeaderTitle("ContexMenu");
      menu.add(0,0,0,"ContextMenu");
     }

     //单击上下文菜单后的逻辑
     @Override
     public boolean onContextItemSelected(MenuItem item) {
      
      ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo();
      String title = ((TextView) info.targetView).getText().toString();
      
      int type =ExpandableListView.getPackedPositionType(info.packedPosition);
      if(type == ExpandableListView.PACKED_POSITION_TYPE_CHILD)
      {
       
       int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
       int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
       Toast.makeText(this, title+"-Group Index"+groupPos+"Child Index:"+childPos,
         Toast.LENGTH_SHORT).show();
       return true;
      }
      return false;
     }


     

    MyExpandableListAdapter.java

    package com.android;

    import android.content.Context;
    import android.view.Gravity;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.BaseExpandableListAdapter;
    import android.widget.TextView;

    public class MyExpandableListAdapter extends BaseExpandableListAdapter {

     private Context mContext;
     
     //父列表数据
     private String[] groups ={"group1","group2","group3","group4",""};
     
     //子列表数据
     private String [][] children ={
       {"child1"},
       {"child1","child2"},
       {"child1","child2","child3"},
       {"child1","child2","child3","child4"},
       };
     
     MyExpandableListAdapter(Context context){
      mContext = context;
     }
     @Override
     public Object getChild(int groupPosition, int childPosition) {
      // TODO Auto-generated method stub
      return children[groupPosition][childPosition];
     }

     @Override
     public long getChildId(int groupPosition, int childPosition) {
      // TODO Auto-generated method stub
      return childPosition;
     }

     //取子列表中的某一项的view
     @Override
     public View getChildView(int groupPosition, int childPosition,
       boolean isLastChild, View convertView, ViewGroup parent) {
      TextView textView = getGenericView();;
      textView.setText(getChild(groupPosition, childPosition).toString());
      return textView;
     }

     @Override
     public int getChildrenCount(int groupPosition) {
      // TODO Auto-generated method stub
      return children[groupPosition].length;
     }

     @Override
     public Object getGroup(int groupPosition) {
      return groups[groupPosition];
     }

     @Override
     public int getGroupCount() {
      // TODO Auto-generated method stub
      return groups.length;
     }

     @Override
     public long getGroupId(int groupPosition) {
      // TODO Auto-generated method stub
      return groupPosition;
     }

     @Override
     public View getGroupView(int groupPosition, boolean isExpanded,
       View convertView, ViewGroup parent) {
      TextView textView = getGenericView();
      textView.setText(getGroup(groupPosition).toString());
      
      return textView;
     }

     @Override
     public boolean hasStableIds() {
      // TODO Auto-generated method stub
      return true;
     }

     @Override
     public boolean isChildSelectable(int groupPosition, int childPosition) {
      // TODO Auto-generated method stub
      return true;
     }

     //获取某一项的view的逻辑
     private TextView getGenericView(){
      AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,48);
      TextView textView = new TextView(mContext);
      textView.setLayoutParams(lp);
      textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
      textView.setPadding(32, 0, 0, 0);
      return textView;
     }
     
    }

    运行的结果如下:

  • 相关阅读:
    oracle一次删除多张表
    JS学习之动态加载script和style样式
    JS动态引入js、CSS动态创建script/link/style标签
    js设置全局变量ajax中赋值
    java获取程序执行时间
    echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小
    Codeforces Round #188 (Div. 1) B. Ants 暴力
    Codeforces Round #188 (Div. 2) C. Perfect Pair 数学
    Codeforces Round #188 (Div. 2) B. Strings of Power 水题
    Codeforces Round #188 (Div. 2) A. Even Odds 水题
  • 原文地址:https://www.cnblogs.com/xiao0/p/2170233.html
Copyright © 2011-2022 走看看