简单齐全的ExtendListVeiw 去掉系统箭头,二级菜单删除等功能

简单齐全的ExtendListVeiw 去掉系统箭头,二级菜单删除等功能

demo下载

/***********************************话不多说,demo里有注释,非常简单明了*******************************************************************/

package com.extend.listview;

import java.util.ArrayList;
import java.util.List;

import com.extend.listview.adapter.MyAdapter;
import com.extend.listview.bean.People;
import com.extend.listview.bean.Students;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ExpandableListView;

public class MainActivity extends Activity {

    private ExpandableListView peoplelist;

    private List<People> pList = null;
    private MyAdapter adapter = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        peoplelist = (ExpandableListView) findViewById(R.id.people_lv);

        adapter = new MyAdapter(this, pList);
        peoplelist.setAdapter(adapter);
    }

    // 初始化数据
    public void initData() {
        pList = new ArrayList<People>();

        People p1 = new People();
        p1.setName("初一");
        p1.setSex(1);
        
        List<Students> list1 = new ArrayList<Students>();
        Students s11 = new Students();
        s11.setJob("1班长");
        list1.add(s11);
        Students s12 = new Students();
        s12.setJob("1组长");
        list1.add(s12);
        Students s13 = new Students();
        s13.setJob("1学习委员");
        list1.add(s13);
        p1.setStudents(list1);
        pList.add(p1);
        
        People p2 = new People();
        p2.setName("初二");
        p2.setSex(2);
        
        List<Students> list2 = new ArrayList<Students>();
        Students s21 = new Students();
        s21.setJob("2班长");
        list2.add(s21);
        Students s22 = new Students();
        s22.setJob("2组长");
        list2.add(s22);
        Students s23 = new Students();
        s23.setJob("2学习委员");
        list2.add(s23);
        p2.setStudents(list2);
        pList.add(p2);
        
        People p3 = new People();
        p3.setName("初三");
        p3.setSex(3);
        
        List<Students> list3 = new ArrayList<Students>();
        Students s31 = new Students();
        s31.setJob("3班长");
        list3.add(s31);
        Students s32 = new Students();
        s32.setJob("3组长");
        list3.add(s32);
        Students s33 = new Students();
        s33.setJob("3学习委员");
        list3.add(s33);
        p3.setStudents(list3);
        pList.add(p3);
    }

}

/****************************************************************************************************/


package com.extend.listview.adapter;

import java.util.List;

import com.extend.listview.R;
import com.extend.listview.bean.People;
import com.extend.listview.bean.Students;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MyAdapter extends BaseExpandableListAdapter {

    private List<People> pList = null;
    private LayoutInflater inflater = null;

    public MyAdapter(Context context, List<People> parent) {
        // TODO Auto-generated constructor stub
        this.inflater = LayoutInflater.from(context);
        this.pList = parent;
    }

    // 得到子item需要关联的数据
    @Override
    public Students getChild(int groupPosition, int childPosition) {
        People key = pList.get(groupPosition);
        return (key.getStudents().get(childPosition));
    }

    // 得到子item的ID
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    // 设置子item的组件
    @Override
    public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView,
            ViewGroup parent) {
        CViewHolder cholder = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.txtitem, null);
            cholder = new CViewHolder();
            cholder.tv = (TextView) convertView.findViewById(R.id.items);
            cholder.btn = (Button) convertView.findViewById(R.id.btns);
            convertView.setTag(cholder);
        } else {
            cholder = (CViewHolder) convertView.getTag();
        }
        final People key = pList.get(groupPosition);
        Students info = key.getStudents().get(childPosition);
        cholder.tv.setText(info.getJob());
        cholder.btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                List<Students> listS = key.getStudents();
                listS.remove(childPosition);
                notifyDataSetChanged();
            }
        });

        return convertView;
    }

    // 获取当前父item下的子item的个数
    @Override
    public int getChildrenCount(int groupPosition) {
        People key = pList.get(groupPosition);
        int size = key.getStudents().size();
        return size;
    }

    // 获取当前父item的数据
    @Override
    public People getGroup(int groupPosition) {
        return pList.get(groupPosition);
    }

    // 获取当前父item的个数
    @Override
    public int getGroupCount() {
        return pList.size();
    }

    // 得到当前父item的ID
    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    // 设置父item组件
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        GViewHolder gholder = null;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.students, null);
            gholder = new GViewHolder();
            gholder.tv = (TextView) convertView.findViewById(R.id.txt1);
            gholder.iv = (ImageView) convertView.findViewById(R.id.image1);
            gholder.iv1 = (ImageView) convertView.findViewById(R.id.image2);
            convertView.setTag(gholder);
        } else {
            gholder = (GViewHolder) convertView.getTag();
        }
        People p = pList.get(groupPosition);
        gholder.tv.setText(p.getName());

        if (p.getSex() == 1) {
            gholder.iv.setImageResource(R.drawable.qqweibo_logo);
        } else if (p.getSex() == 2) {
            gholder.iv.setImageResource(R.drawable.sinalogo_small);
        } else if (p.getSex() == 3) {
            gholder.iv.setImageResource(R.drawable.qqzone_logo);
        }
        if (!isExpanded) {
            gholder.iv1.setImageResource(R.drawable.category_iv_oneitem_arrow_up);
        } else {
            gholder.iv1.setImageResource(R.drawable.category_iv_oneitem_arrow_down);
        }

        return convertView;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return true;
    }

    public class GViewHolder {
        private TextView tv;
        private ImageView iv;
        private ImageView iv1;
    }

    public class CViewHolder {
        private TextView tv;
        private Button btn;
    }

}
demo下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Eclipse 中给文件右键菜单添加可展开的二级菜单,需要在插件的 `plugin.xml` 文件中进行配置。 首先,在 `plugin.xml` 中定义一个菜单: ```xml <menu id="mySubMenu" label="My Sub Menu" icon="icons/sample.gif"> </menu> ``` 然后,在 `plugin.xml` 中定义一个 `popupMenu` 扩展,将菜单添加到文件的右键菜单中: ```xml <extension point="org.eclipse.ui.popupMenus"> <objectContribution objectClass="org.eclipse.core.resources.IFile" id="com.example.myObjectContribution"> <menu id="myPopupMenu" label="My Popup Menu"> <command commandId="org.eclipse.ui.file.refresh" label="Refresh"/> <menu id="mySubMenu" label="My Sub Menu"> <command commandId="com.example.myCommand" label="Submenu Command"/> </menu> </menu> <action label="My Action" class="com.example.MyAction" menubarPath="myPopupMenu/mySubMenu" enablesFor="1" id="com.example.myAction"> </action> </objectContribution> </extension> ``` 在上述代码中,`objectContribution` 定义了一个对象贡献,用于将菜单和操作添加到文件的右键菜单中。`menu` 定义了一个顶级菜单和一个子菜单,其中子菜单的 `id` 属性和上面定义的菜单的 `id` 属性相同。`command` 定义了一个刷新命令,并将其添加到顶级菜单中;`action` 定义了一个自定义操作,并将其添加到子菜单中。`menubarPath` 属性指定了操作所在的菜单路径,这里是子菜单的路径。 配置完成后,右键单击文件时,将显示一个名为 "My Popup Menu" 的顶级菜单,其中包含了 "Refresh" 命令和名为 "My Sub Menu" 的子菜单,子菜单中包含了 "Submenu Command" 命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值