1. 程式人生 > >安卓-ListView側滑(二)之SwipeMenuListView新增menu.getViewType()屬性控制是否側滑

安卓-ListView側滑(二)之SwipeMenuListView新增menu.getViewType()屬性控制是否側滑

這篇部落格記錄的是曾經做過的一個專案,需求是一個list裡面要求有的部分可以側滑刪除,有的部分不可以,側滑用的是開源專案SwipeMenuListView在網上查了些資料,根據這個需求又自己做了調整,終於完美的解決了,好,上程式碼。

1.在gradle中新增dependency

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

2.xml佈局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white">
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation
="vertical">
<com.baoyz.swipemenulistview.SwipeMenuListView android:id="@+id/slv_list" android:layout_width="match_parent" android:dividerHeight="0dp" android:layout_height="wrap_content" android:background="@color/transport"> </com.baoyz.swipemenulistview.SwipeMenuListView
>
</LinearLayout> </RelativeLayout>

3.adapter處理

//定義這兩個引數
 public static final int viewtype_normaldata = 0public static final int viewtype_erpdata = 1;
//新增這兩方法
 @Override
    public int getViewTypeCount() {
        // menu type count
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        // current menu type
       // String type=list.get(position).getType();
        return list.get(position).getType().equals("info")?viewtype_normaldata:viewtype_erpdata;
    }

4.activity

      mesData=new ArrayList<MessageAllObject>();
    //mesData資料自己新增,其中要有type引數來判斷是那種型別
      messageAllAdapter=new MessageAllAdapter(getContext(),mesData);
      slv_list.setAdapter(messageAllAdapter);

      SwipeMenuCreator creator = new SwipeMenuCreator() {
            @Override
            public void create(SwipeMenu menu) {
                switch (menu.getViewType()) {
                    case MessageAllAdapter.viewtype_normaldata:
                       break;
                    case MessageAllAdapter.viewtype_erpdata:
                        SwipeMenuItem deleteItem = new SwipeMenuItem(PSApplication.getAppBaseContext());
                        // set item background  
                        deleteItem.setBackground(R.drawable.delete_button);
                        // set item width  
                        deleteItem.setWidth(dp2px(120));
                        // set a icon  
                        // deleteItem.setIcon(R.drawable.ic_delete);  
                        // add to menu  
                        menu.addMenuItem(deleteItem);
                        break;
                }

            }
        };

        //監聽滑動項的事件
        slv_list.setMenuCreator(creator);
        slv_list.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
                switch (index) {
                    case 0:
                      //刪除操作
                        break;
                    default:
                        break;
                }
                return false;
            }
        });

        //item的點選事件
        slv_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
               //點選操作
            }
        });