package com.lzx.demo.adapter;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.lzx.demo.R;
import com.lzx.demo.base.ListBaseAdapter;
import com.lzx.demo.base.SuperViewHolder;
import com.lzx.demo.bean.ItemModel;
import com.lzx.demo.util.AppToast;
import com.lzx.demo.view.SwipeMenuView;
public class SwipeMenuAdapter extends ListBaseAdapter<ItemModel> {
public SwipeMenuAdapter(Context context) {
super(context);
}
@Override
public int getLayoutId() {
return R.layout.list_item_swipe;
}
@Override
public void onBindItemHolder(SuperViewHolder holder, final int position) {
View contentView = holder.getView(R.id.swipe_content);
TextView title = holder.getView(R.id.title);
Button btnDelete = holder.getView(R.id.btnDelete);
Button btnUnRead = holder.getView(R.id.btnUnRead);
Button btnTop = holder.getView(R.id.btnTop);
//这句话关掉IOS阻塞式交互效果 并依次打开左滑右滑
((SwipeMenuView)holder.itemView).setIos(false).setLeftSwipe(position % 2 == 0 ? true : false);
title.setText(getDataList().get(position).title + (position % 2 == 0 ? "我只能右滑动" : "我只能左滑动"));
//隐藏控件
btnUnRead.setVisibility(position % 3 == 0 ? View.GONE : View.VISIBLE);
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != mOnSwipeListener) {
//如果删除时,不使用mAdapter.notifyItemRemoved(pos),则删除没有动画效果,
//且如果想让侧滑菜单同时关闭,需要同时调用 ((CstSwipeDelMenu) holder.itemView).quickClose();
//((CstSwipeDelMenu) holder.itemView).quickClose();
mOnSwipeListener.onDel(position);
}
}
});
//注意事项,设置item点击,不能对整个holder.itemView设置咯,只能对第一个子View,即原来的content设置,这算是局限性吧。
contentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppToast.makeShortToast(mContext, getDataList().get(position).title);
Log.d("TAG", "onClick() called with: v = [" + v + "]");
}
});
//置顶:
btnTop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null!=mOnSwipeListener){
mOnSwipeListener.onTop(position);
}
}
});
}
/**
* 和Activity通信的接口
*/
public interface onSwipeListener {
void onDel(int pos);
void onTop(int pos);
}
private onSwipeListener mOnSwipeListener;
public void setOnDelListener(onSwipeListener mOnDelListener) {
this.mOnSwipeListener = mOnDelListener;
}
}