安卓-ListView侧滑(二)之SwipeMenuListView添加menu.getViewType()属性控制是否侧滑

来源:互联网 发布:python compile 编辑:程序博客网 时间:2024/05/21 07:02

这篇博客记录的是曾经做过的一个项目,需求是一个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) {               //点击操作            }        });
原创粉丝点击