package com.ckr.pagesnaphelper.adapter; import android.content.Context; import android.support.annotation.LayoutRes; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.ckr.pagesnaphelper.R; import com.ckr.pagesnaphelper.model.Item; import com.ckr.pageview.adapter.BasePageAdapter; /** * Created by PC大佬 on 2018/1/14. */ public class MainAdapter extends BasePageAdapter<Item, MainAdapter.MainHolder> { private static final String TAG = "MainAdapter"; public static final int MIN_VALUE = 6; private boolean isShowDeleteIcon; private int mLayoutId; public MainAdapter(Context context, @LayoutRes int itemLayoutId) { super(context); mLayoutId = itemLayoutId; } @Override public int getItemCount() { int itemCount = super.getItemCount(); if (mIsLooping) { return itemCount == 0 ? 0 : Math.max(itemCount * 2, MIN_VALUE); } return itemCount; } @Override protected int getLayoutId(int viewType) { return mLayoutId; } @Override protected MainHolder getViewHolder(View itemView, int viewType) { return new MainHolder(itemView); } @Override protected void convert(MainHolder holder, final int position, Item originItem, final int adjustedPosition, Item item) { if (mLayoutFlag == GRID) { int page = adjustedPosition % (mRow * mColumn * 6); if (page < mRow * mColumn) { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color1)); } else if (page < mRow * mColumn * 2) { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color2)); } else if (page < mRow * mColumn * 3) { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color3)); } else if (page < mRow * mColumn * 4) { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color4)); } else if (page < mRow * mColumn * 5) { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color5)); } else { holder.itemView.setBackgroundColor(ContextCompat.getColor(mContext, R.color.color6)); } } else { int page = adjustedPosition % 6; if (page < 1) { holder.imageView.setImageResource(R.drawable.bg_color1); } else if (page < 2) { holder.imageView.setImageResource(R.drawable.bg_color2); } else if (page < 3) { holder.imageView.setImageResource(R.drawable.bg_color3); } else if (page < 4) { holder.imageView.setImageResource(R.drawable.bg_color4); } else if (page < 5) { holder.imageView.setImageResource(R.drawable.bg_color5); } else if (page < 6) { holder.imageView.setImageResource(R.drawable.bg_color6); } } if (item == null) { holder.relativeLayout.setVisibility(View.INVISIBLE); holder.itemView.setOnLongClickListener(null); holder.itemView.setOnClickListener(null); holder.imageButton.setOnClickListener(null); } else { holder.relativeLayout.setVisibility(View.VISIBLE); holder.textView.setText(item.getName()); holder.itemView.setOnLongClickListener(new OnItemLongClickListener(adjustedPosition)); holder.itemView.setOnClickListener(new OnItemClickListener(adjustedPosition)); holder.imageButton.setOnClickListener(new OnItemClickListener(adjustedPosition)); holder.imageButton.setVisibility(isShowDeleteIcon ? View.VISIBLE : View.GONE); } } class MainHolder extends RecyclerView.ViewHolder { private TextView textView; private RelativeLayout relativeLayout; private ImageButton imageButton; private ImageView imageView; public MainHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); relativeLayout = (RelativeLayout) itemView.findViewById(R.id.relativeLayout); imageButton = (ImageButton) itemView.findViewById(R.id.imageButton); imageView = (ImageView) itemView.findViewById(R.id.imageView); } } class OnItemLongClickListener implements View.OnLongClickListener { private int mPosition; public OnItemLongClickListener(int position) { mPosition = position; } @Override public boolean onLongClick(View v) { isShowDeleteIcon = !isShowDeleteIcon; notifyDataSetChanged(); return true; } } class OnItemClickListener implements View.OnClickListener { private int mTargetPos; public OnItemClickListener(int adjustedPos) { mTargetPos = adjustedPos; } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.imageButton) { removeItem(mTargetPos); } else { Toast.makeText(mContext, "position:" + mTargetPos, Toast.LENGTH_SHORT).show(); } } } }