Android仿QQ列表滑动弹出按钮、长按提示、刷新列表

原理:  ScrollView(刷新) + ListView(弹出按钮)java

说明:因为能力有限,刷新和滑动弹出按钮都是第三方的library(library_pullToRefresh + library_SwipeMenuListView)  我只是整合了一下,须要的留言。。。android

图片:ide

实现代码:.net

1》xml:code

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <include layout="@layout/top_bar" />
    <LinearLayout
        android:background="@drawable/login_boder_bg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:orientation="vertical">
        <!--刷新 -->
        <com.handmark.pulltorefresh.library.PullToRefreshScrollView
            android:id="@+id/scrollview"
            android:layout_margin="5dp"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_margin="20dp"
                android:orientation="vertical">
                <EditText
                    android:gravity="center"
                    android:layout_width="match_parent"
                    android:layout_height="40dp"
                    android:hint="搜索"
                    android:background="@drawable/login_boder_bg" />
                    <!--弹出按钮 -->
                <com.baoyz.swipemenulistview.SwipeMenuListView
                    android:id="@+id/swipe_menu_listview"
                    android:layout_marginTop="10dp"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </LinearLayout>
        </com.handmark.pulltorefresh.library.PullToRefreshScrollView>
    </LinearLayout>
</LinearLayout>

2》java:这里只贴出核心代码:xml

        //设置ListView的高度--解决只显示一行问题
        setListViewHeight();(http://my.oschina.net/imeibi/blog/370947
        //刷新
        pullToRefresh();
        //建立卡片
        createMenu();
        //加载数据
        getData();blog

 1.//刷新
/**
     * 刷新
     */
    private void pullToRefresh() {
        pullToRefreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                //下拉
                getData();
            }
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                //上拉
                Message message2 = handler.obtainMessage(ONREFRESH_COMPLETE_UP);
                handler.sendMessage(message2);
            }
        });
    }
 2.//建立卡片
/**
     * step 1. create a MenuCreator
     */
    private void createMenu() {
        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(CommonUtils.dip2px(getApplicationContext(), 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(CommonUtils.dip2px(getApplicationContext(), 90));
                // set a icon
                deleteItem.setIcon(R.drawable.ic_delete);
                // add to menu
                menu.addMenuItem(deleteItem);
            }
        };
        // set creator
        swipeMenuListView.setMenuCreator(creator);
        /**
         * step 2. listener item click event
         */
        swipeMenuListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
            @Override
            public void onMenuItemClick(int position, SwipeMenu menu, int index) {
                ApplicationInfo item = mAppinfoList.get(position);
                switch (index) {
                    case 0:
                        // open
                        // open(item);
                        showCustomToast("打开第" + position + "个");
                        break;
                    case 1:
                        // delete
                        // delete(item);
                        showCustomToast("删除第" + position + "个");
                        mAppinfoList.remove(position);
                        swipeMenuListAdapter.notifyDataSetChanged();
                        break;
                }
            }
        });
        // set SwipeListener
        swipeMenuListView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
            @Override
            public void onSwipeStart(int position) {
                // swipe start
            }
            @Override
            public void onSwipeEnd(int position) {
                // swipe end
            }
        });
        // other setting
//  listView.setCloseInterpolator(new BounceInterpolator());
        // test item long click
        swipeMenuListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view,
                                           int position, long id) {
                showCustomToast("长按想干吗...");
                return false;
            }
        });
    }
3. //加载数据
public void getData() {
        Message infoMessage = handler.obtainMessage(APPLICATION_INFO);
        handler.sendMessage(infoMessage);
    }

有不足请见谅,图片

问题:ScrollView 中嵌套listView 滑动的时候会出现冲突  你们有没有很好的解决办法....ip