ActivityMain .java

package study.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 study.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;    } }





更多相关文章

  1. Android(安卓)安卓使用MediaPlayer播放列表视频
  2. oschina android app 2.2.1 源码收藏
  3. Android获取开机启动程序列表
  4. Android二级分类列表ListView
  5. android中实现一个DrawerLayout滑动菜单
  6. tools:context =“activityname”布局文件中定activity的渲染上
  7. [Android(安卓)GMS 认证] CTS 问题列表之 CtsSecurityTestCases
  8. (20120808)(01)android菜单与对话框--之日期及时间选择对话框
  9. 有关Material Design新特性的详解。

随机推荐

  1. 盘点物联网设备7大***面及其应对措施
  2. Pyflame 生成火焰图分析 Python 程序
  3. 从零开始开发一个 Web 服务器(2)
  4. 容器出口流量控制:OpenShift安全系列第七
  5. 使用 Pillow 快速创建 GIF 动图
  6. 实战:一文说清OpenShift的Egress Router:Op
  7. Vue自学之路10-简单的计算器
  8. vue2基础语法2与监听属性和计算属性
  9. 紫薇圣人的程序员人生[原创IT小说]
  10. 去Oracle实录:如何在线更换金融核心场景中