package com.liyu.fakeweather.ui.bus.adapter; import android.content.ContentValues; import android.support.design.widget.Snackbar; import android.view.View; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.liyu.fakeweather.R; import com.liyu.fakeweather.model.BusLineDetail; import com.liyu.fakeweather.model.FavoritesBusBean; import com.liyu.fakeweather.ui.MainActivity; import com.liyu.fakeweather.ui.bus.LineDetailActivity; import com.liyu.fakeweather.utils.RxDataBase; import org.litepal.crud.DataSupport; import java.util.List; import rx.functions.Func1; /** * Created by liyu on 2016/11/29. */ public class FavoritesAdapter extends BaseQuickAdapter<FavoritesBusBean, BaseViewHolder> { private int deletedPosition = 0; private FavoritesBusBean deletedItem; public FavoritesAdapter(int layoutResId, List<FavoritesBusBean> data) { super(layoutResId, data); } @Override protected void convert(final BaseViewHolder holder, final FavoritesBusBean item) { holder.setText(R.id.tv_fav_name, item.getLName()); holder.setText(R.id.tv_fav_info, item.getLDirection()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { LineDetailActivity.start(mContext, item.getLGUID(), item.getLName(), item.getLDirection()); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View view) { deletedPosition = holder.getAdapterPosition(); deletedItem = item; remove(deletedPosition); setFavorite(deletedItem, false); Snackbar.make(((MainActivity) mContext).getWindow().getDecorView().getRootView().findViewById(R.id.contentLayout), "删除成功!", Snackbar.LENGTH_LONG).setAction("撤销", new View.OnClickListener() { @Override public void onClick(View view) { add(deletedPosition, deletedItem); setFavorite(deletedItem, true); } }).setActionTextColor(mContext.getResources().getColor(R.color.actionColor)).show(); return true; } }); } private void setFavorite(FavoritesBusBean item, final boolean isFav) { RxDataBase.getFirst(BusLineDetail.class, "LGUID = ?", item.getLGUID()).map(new Func1<BusLineDetail, Integer>() { @Override public Integer call(BusLineDetail busLineDetail) { ContentValues values = new ContentValues(); values.put("isFavorite", isFav); return DataSupport.updateAll(BusLineDetail.class, values, "LGUID = ?", busLineDetail.getLGUID()); } }).subscribe(); } }