ListView側滑菜單SwipeMenuListView的簡單使用

第三方開源項目SwipeMenuListViewjava

github上的連接地址是:https://github.com/baoyongzhang/SwipeMenuListViewandroid

依賴:git

dependencies {
    compile 'com.baoyz.swipemenulistview:library:1.3.0'
}

ps:我導入最新的Studio報錯,不知道什麼狀況github

那就只好導入源文件了數組

將library/ src/main/java/com/ baoyz/ swipemenulistview目錄下的全部源代碼文件放入本身的項目代碼包中便可使用,源代碼文件和包結構如圖所示:ide

使用很是簡單:佈局

XML佈局文件裏直接調用測試

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

代碼實現:this

public class MainActivity extends AppCompatActivity {
    private Context context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context=this;
        setContentView(R.layout.activity_main);
        //初始化
        SwipeMenuCreator creator = new SwipeMenuCreator() {
            @Override
            public void create(SwipeMenu menu) {
                SwipeMenuItem openItem = new SwipeMenuItem(context);
                //設置背景
                openItem.setBackground(new ColorDrawable(Color.GREEN));
                //設置寬,必定要設置否則顯示不出來
                openItem.setWidth(dp2px(90));
                //設置標題
                openItem.setTitle("打開");
                //設置文字大小
                openItem.setTitleSize(20);
                //設置文字顏色
                openItem.setTitleColor(Color.WHITE);
                //添加到listview中
                menu.addMenuItem(openItem);

                SwipeMenuItem deleteItem = new SwipeMenuItem(context);
                deleteItem.setBackground(new ColorDrawable(Color.RED));
                deleteItem.setWidth(dp2px(90));
                //設置圖片
                deleteItem.setIcon(android.R.drawable.ic_delete); 
                menu.addMenuItem(deleteItem);
            }
        };

        SwipeMenuListView listView = (SwipeMenuListView) findViewById(R.id.listView);
        listView.setMenuCreator(creator);
        listView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(int position, SwipeMenu menu,int index) {
                //index的值就是在SwipeMenu依次添加SwipeMenuItem順序值,相似數組的下標。
                //從0開始,依次是:0、一、二、3...
                switch (index) {
                    case 0:
                        Toast.makeText(context, "打開:"+position,Toast.LENGTH_SHORT).show();
                        break;

                    case 1:
                        Toast.makeText(context, "刪除:"+position,Toast.LENGTH_SHORT).show();
                        break;
                }
                // false : 當用戶觸發其餘地方的屏幕時候,自動收起菜單。
                // true : 不改變已經打開菜單的樣式,保持原樣不收起。
                return false;
            }
        });
        // 監測用戶在ListView的SwipeMenu側滑事件。
        listView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() {
            @Override
            public void onSwipeStart(int pos) {
                Log.d("位置:" + pos, "開始側滑...");
            }
            @Override
            public void onSwipeEnd(int pos) {
                Log.d("位置:" + pos, "側滑結束.");
            }
        });
        //測試數據集。
        String[] data = new String[30];
        for (int i = 0; i < data.length; i++) {
            data[i] = "測試數據:" + i;
        }
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, data);
        listView.setAdapter(adapter);
    }
    public int dp2px(float dipValue) {
        final float scale = this.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }
}
相關文章
相關標籤/搜索