package com.jinsen.multifinder;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;
import com.jinsen.multifinder.Events.StatusMessage;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
* Created by Jinsen on 15/6/1.
*/
public class DeviceAdapter extends RecyclerSwipeAdapter<DeviceAdapter.DeviceHolder> {
List<DeviceBean> mDevices;
List<Integer> mColors;
private MyItemClickListener myItemClickListener;
public DeviceAdapter(List<DeviceBean> mDevices, List<Integer> mColors) {
this.mDevices = mDevices;
this.mColors = mColors;
}
@Override
public DeviceHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
return new DeviceHolder(view, myItemClickListener);
}
@Override
public void onBindViewHolder(final DeviceHolder holder, final int position) {
if (mDevices.size() == 0) {
return;
}
holder.mTitle.setText(mDevices.get(position).getTitle());
holder.mAddress.setText(mDevices.get(position).getAddress());
holder.mRssi.setText(mDevices.get(position).getRssi() + "");
holder.mColorband.setBackgroundColor(mColors.get(position));
holder.mTrash.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mItemManger.removeShownLayouts(holder.swipelayout);
EventBus.getDefault().post(new StatusMessage(mDevices.get(position).getAddress(), StatusMessage.TRASH));
mDevices.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, mDevices.size());
mItemManger.closeAllItems();
Log.d(this.getClass().getSimpleName(), "Remove " + position);
}
});
}
public void setOnItemClickListener (MyItemClickListener listener) {
this.myItemClickListener = listener;
}
public interface MyItemClickListener {
public void onClick(View view, int position);
}
@Override
public int getItemCount() {
return mDevices.size();
}
@Override
public int getSwipeLayoutResourceId(int i) {
return R.id.swipelayout;
}
public static class DeviceHolder extends RecyclerView.ViewHolder implements View.OnLongClickListener{
public TextView mTitle;
public TextView mAddress;
public TextView mRssi;
public FrameLayout mColorband;
public ImageView mTrash;
public SwipeLayout swipelayout;
private MyItemClickListener mListener;
public DeviceHolder(final View itemView, MyItemClickListener listener) {
super(itemView);
mTitle = ((TextView) itemView.findViewById(R.id.item_title));
mAddress = ((TextView) itemView.findViewById(R.id.item_address));
mRssi = ((TextView) itemView.findViewById(R.id.item_rssi));
mColorband = ((FrameLayout) itemView.findViewById(R.id.colorband));
mTrash = ((ImageView) itemView.findViewById(R.id.star));
swipelayout = ((SwipeLayout) itemView.findViewById(R.id.swipelayout));
mListener = listener;
swipelayout.setOnLongClickListener(this);
}
@Override
public boolean onLongClick(View v) {
if (mListener != null) {
mListener.onClick(v, getLayoutPosition());
}
return true;
}
}
}