ListView侧滑删除操作已经成为了一种常见的交互,一般是从列表控件自身出发,重写ListView实现,比如网上使用频率较高的SwipeMenuListView。 其实还有一种更直观的做法,那就是把焦点放在滑动List Item本身这个操作上来,自定义可以支持侧滑操作的ItemView,即对ListView适配器中的convertView的RootView布局控件进行重写,这样更容易扩展,方便控制列表项哪些可以侧滑,哪些不能滑动,哪些使用左滑,哪些使用右滑等,还减少了代码量。
使用setSwipeEnable方法
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView = inflater.inflate(R.layout.list_item, parent, false); viewHolder.rootView = (SwipeMenuViewGroup) convertView; viewHolder.rootView.setSwipeEnable(true); viewHolder.contentView = (LinearLayout) convertView.findViewById(R.id.content_view); viewHolder.contentTv = (TextView) convertView.findViewById(R.id.content_tv); viewHolder.contentIv = (ImageView) convertView.findViewById(R.id.content_iv); viewHolder.deleteIv = (ImageView) convertView.findViewById(R.id.iv_delete); viewHolder.editIv = (ImageView) convertView.findViewById(R.id.iv_edit); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } if(position % 2 == 0) { viewHolder.rootView.setSwipeEnable(false); } viewHolder.contentTv.setText(mList.get(position)); viewHolder.contentIv.setImageResource(R.drawable.ic_more); return convertView; }因为这个侧滑效果思路的实现只需要编写一个类完成,所以没有把他作为开源库,使用时直接将这个类拷贝到自己的工程中即可。

https://github.com/coderJohnZhang/SideSlipDemo
新闻热点
疑难解答
图片精选