demo源码,需要可以下载

1.这是一个github开源项目,先去github上面下载,github下载地址

2.将SwipeMenuListView项目,导入,然后新建项目如果要引用,要设置为相应的lid应用,如图勾选。

3.activity_main.xml 的布局文件代码:

<com.baoyz.swipemenulistview.SwipeMenuListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />  

主要是加入这个控件。

4.item_list_app.xml布局文件,代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="8dp" >  

    <ImageView
        android:id="@+id/iv_icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher" />  

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@+id/iv_icon"
        android:text="name"
        android:textColor="@android:color/black"
        android:textSize="18sp" />  

</RelativeLayout>  

5.加入ic_delete.png图片。

6.定义扩展自BaseAdapter的adapter,用来提供列表数据。

同时重写swipeMenu的回调方法,主要是实现SwipeMenuCreator 这个类的create()方法,和相应的OnMenuItemClickListener接口。至于数据来源则是List类型的,是由 getPackageManager().getInstalledApplications(0); 方法获得。

如果要重用这个代码,需要实现SwipeMenuCreator 类和相应的OnMenuItemClickListener接口。

主要代码如下:

public class MainActivity extends Activity {  

    private List<ApplicationInfo> mAppList;
    private AppAdapter mAdapter;
    private SwipeMenuListView mListView;  

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  

        mAppList = getPackageManager().getInstalledApplications(0);  

        mListView = (SwipeMenuListView) findViewById(R.id.listView);
        mAdapter = new AppAdapter();
        mListView.setAdapter(mAdapter);  

        SwipeMenuCreator creator = new SwipeMenuCreator() {  

            @Override
            public void create(SwipeMenu menu) {
                // create "open" item
                SwipeMenuItem openItem = new SwipeMenuItem(
                        getApplicationContext());
                // set item background
                openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9,
                        0xCE)));
                // set item width
                openItem.setWidth(dp2px(90));
                // set item title
                openItem.setTitle("Open");
                // set item title fontsize
                openItem.setTitleSize(18);
                // set item title font color
                openItem.setTitleColor(Color.WHITE);
                // add to menu
                menu.addMenuItem(openItem);  

                // create "delete" item
                SwipeMenuItem deleteItem = new SwipeMenuItem(
                        getApplicationContext());
                // set item background
                deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9,
                        0x3F, 0x25)));
                // set item width
                deleteItem.setWidth(dp2px(90));
                // set a icon
                deleteItem.setIcon(R.drawable.ic_delete);
                // add to menu
                menu.addMenuItem(deleteItem);
            }
        };  

        // set creator
        mListView.setMenuCreator(creator);  

        mListView.setOnMenuItemClickListener(new OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
                switch (index) {
                case 0:
                    // open
                    Toast.makeText(getApplicationContext(), "Open", Toast.LENGTH_SHORT).show();
                    break;
                case 1:
                    // delete
                    Toast.makeText(getApplicationContext(), "Delete", Toast.LENGTH_SHORT).show();
//                  mAppList.remove(position);
//                  mAdapter.notifyDataSetChanged();
                    break;
                }
                // false : close the menu; true : not close the menu
                return false;
            }
        });  

    }
    class AppAdapter extends BaseAdapter {  

        @Override
        public int getCount() {
            return mAppList.size();
        }  

        @Override
        public ApplicationInfo getItem(int position) {
            return mAppList.get(position);
        }  

        @Override
        public long getItemId(int position) {
            return position;
        }  

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = View.inflate(getApplicationContext(),
                        R.layout.item_list_app, null);
                new ViewHolder(convertView);
            }
            ViewHolder holder = (ViewHolder) convertView.getTag();
            ApplicationInfo item = getItem(position);
            holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager()));
            holder.tv_name.setText(item.loadLabel(getPackageManager()));
            return convertView;
        }  

        class ViewHolder {
            ImageView iv_icon;
            TextView tv_name;  

            public ViewHolder(View view) {
                iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
                tv_name = (TextView) view.findViewById(R.id.tv_name);
                view.setTag(this);
            }
        }
    }  

    private int dp2px(int dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
                getResources().getDisplayMetrics());
    }
}  

最新文章

  1. 深入理解定时器系列——被誉为神器的requestAnimationFrame
  2. Codeforces 2016 ACM Amman Collegiate Programming Contest A. Coins(动态规划/01背包变形)
  3. JSTL函数
  4. JS控制鼠标点击事件
  5. Socket get http request
  6. JAVA之经典Student问题1
  7. C#获取变量名的扩展方法
  8. jquery、js获取页面高度宽度等
  9. (NO.00002)iOS游戏精灵战争雏形(三)
  10. java 静态资源访问详解
  11. python学习之旅(二)
  12. GP card规范学习笔记
  13. 17秋 SDN课程 第四次上机作业
  14. Spring Batch JSR-305 支持
  15. Oracle日期格式化以及extract函数的使用
  16. ftps加密服务器
  17. html发展史简介(摘抄)
  18. hau1021 Fibonacci Again(递归)
  19. Android(java)学习笔记68:使用proguard混淆android代码
  20. 解决The prefix &#39;context&#39; for element &#39;context:component-scan&#39; is not bound

热门文章

  1. css 的一些知识点的整理
  2. openfire彻底卸载的方法
  3. ABP领域层知识回顾之---仓储
  4. ●BZOJ 3123 [Sdoi2013]森林
  5. 决战 状压dp
  6. 《cocos2d-x游戏开发之旅》问题2016-10-7
  7. java随机生成字符串和校验
  8. IOS JavaScriptCore介绍
  9. log4j不生成日志文件的问题
  10. JAX-RPC 与 JAX-WS 的比较