zoukankan      html  css  js  c++  java
  • android--------ListView和ExpandableListView的侧滑删除操作

    本案例主要实现了ListView和ExpandableListView的侧滑删除操作功能

    效果图:

            

    ListView的Adapter类

    private class SlideAdapter extends BaseAdapter {
    
            private LayoutInflater mInflater;
    
            SlideAdapter() {
                super();
                mInflater = getLayoutInflater();
            }
    
            @Override
            public int getCount() {
                return mMessageItems.size();
            }
    
            @Override
            public Object getItem(int position) {
                return mMessageItems.get(position);
            }
    
            @Override
            public long getItemId(int position) {
                return position;
            }
    
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder;
    
                ZQView slideView = (ZQView) convertView;
                if (slideView == null) {
                    View itemView = mInflater.inflate(R.layout.list_item, null);
    
                    slideView = new ZQView(ActivityListViewDelete.this);
                    slideView.setContentView(itemView);
                    holder = new ViewHolder(slideView);
                    slideView.setTag(holder);
                } else {
                    holder = (ViewHolder) slideView.getTag();
                }
                MessageItem item = mMessageItems.get(position);
                slideView.shrink();
                holder.title.setText(item.title);
                holder.time.setText(item.time);
                holder.deleteHolder.setOnClickListener(ActivityListViewDelete.this);
    
                return slideView;
            }
    
        }
    
        public class MessageItem {
            public String title;
            public String msg;
            public String time;
        }
    
        private static class ViewHolder {
            public ImageView icon;
            public TextView title;
            public TextView time;
            public ViewGroup deleteHolder;
    
            ViewHolder(View view) {
                icon = (ImageView) view.findViewById(R.id.icon);
                title = (TextView) view.findViewById(R.id.title);
                time = (TextView) view.findViewById(R.id.time);
                deleteHolder = (ViewGroup) view.findViewById(R.id.holder);
            }
        }
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            Toast.makeText(this, "onItemClick position=" + position, Toast.LENGTH_LONG).show();
    
        }
    
        @Override
        public void onClick(View v) {
            if (v.getId() == R.id.holder) {
                Toast.makeText(this, "删除操作", Toast.LENGTH_LONG).show();
    
            }
        }

    ExpandableListView的Adapter

    private Context context;
        private ListView listView;
        List<UserInfo> list;
    
        public MyElvAdapter(Context context, ListView listView, List<UserInfo> list) {
            super();
            this.context = context;
            this.listView = listView;
            this.list=list;
        }
    
        @Override
        public Object getChild(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return list.get(arg0).getDatas().get(arg1);
        }
    
        @Override
        public long getChildId(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public View getChildView(final int groupPosition, final int position,
                boolean arg2, View convertView, ViewGroup parent) {
    
            final ViewHolder1 viewHolder1;
            if (convertView == null){
                convertView = LayoutInflater.from(context).inflate(R.layout.item2,
                        null);
                viewHolder1=new ViewHolder1(convertView);
                convertView.setTag(viewHolder1);
    
            }else {
                viewHolder1=(ViewHolder1)convertView.getTag();
            }
            new FrontViewToMove(viewHolder1.frontView, listView,200);
            viewHolder1.button.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    //删除事件,回调接口传参数
                    onClickDeleteListenter.onItemClick(v,groupPosition,position);
                    new FrontViewToMove(viewHolder1.frontView, listView,200).generateRevealAnimate(viewHolder1.frontView,0);
    
                }
            });
            viewHolder1.textView.setTextSize(20);
            viewHolder1.textView.setTextColor(Color.DKGRAY);
            viewHolder1.textView.setText("  " + list.get(groupPosition).getDatas().get(position).getName());
            return convertView;
        }
    
        class ViewHolder1 {
            private TextView textView;
            private View frontView;
            private Button button;
            public ViewHolder1(View view){
                textView= (TextView) view.findViewById(R.id.text);
                button = (Button) view.findViewById(R.id.btn_delete);
                frontView = view.findViewById(R.id.id_front);
            }
        }
    
    
        // 删除接口回调方法
        private OnClickDeleteListenter onClickDeleteListenter = null;
        public void setOnClickDeleteListenter(OnClickDeleteListenter listener) {
            this.onClickDeleteListenter = listener;
        }
    
        @Override
        public int getChildrenCount(int arg0) {
            // TODO Auto-generated method stub
            return (list!=null && list.size()>0)? list.get(arg0).getDatas().size() : 0;
        }
    
        @Override
        public Object getGroup(int arg0) {
            // TODO Auto-generated method stub
            return list.get(arg0);
        }
    
        @Override
        public int getGroupCount() {
            // TODO Auto-generated method stub
            return (list!=null && list.size()>0) ? list.size() : 0;
        }
    
        @Override
        public long getGroupId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public View getGroupView(final int groupPosition, boolean isExpanded,
                                 View convertView, ViewGroup parent) {
            final ViewHolder viewHolder;
            if (convertView ==null){
                convertView = LayoutInflater.from(context).inflate(R.layout.item1,null);
                viewHolder =new ViewHolder(convertView);
                convertView.setTag(viewHolder);
            }else {
                viewHolder=(ViewHolder)convertView.getTag();
            }
            viewHolder.textView.setText("条目 " + list.get(groupPosition).getId());
            viewHolder.textView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(context,"第一层点击操作",Toast.LENGTH_LONG).show();
                }
            });
            return convertView;
        }
    
        @Override
        public boolean hasStableIds() {
            // TODO Auto-generated method stub
            return false;
        }
    
        @Override
        public boolean isChildSelectable(int arg0, int arg1) {
            // TODO Auto-generated method stub
            return false;
        }
    
        class ViewHolder {
            TextView textView;
            public ViewHolder(View view){
                textView= (TextView) view.findViewById(R.id.name);
            }
        }

    注:更新修复侧滑删除报错。

    源码下载: https://github.com/DickyQie/ListViewExpandableListViewDelete  

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/zhangqie/p/6112337.html
Copyright © 2011-2022 走看看