Skip to content

Instantly share code, notes, and snippets.

@spiritedRunning
Last active August 18, 2016 03:43
Show Gist options
  • Save spiritedRunning/5e2bbb683f876baabe5e7df7c03b645c to your computer and use it in GitHub Desktop.
Save spiritedRunning/5e2bbb683f876baabe5e7df7c03b645c to your computer and use it in GitHub Desktop.
横向RecyclerView
public class GalleryAccountAdapter extends RecyclerView.Adapter<GalleryAccountAdapter.ViewHolder> {
private static final String tag = GalleryAccountAdapter.class.getSimpleName();
private LayoutInflater mInflater;
private RelativeLayout relativeLayout;
private OnItemClickListener mOnItemClickListener;
// 列表项布局id
private int item_ResID;
private List<HistoryAccount> historyAccountData;
// 删除图标显隐标志
private boolean bDelIconShow = false;
public GalleryAccountAdapter(Context context, List<HistoryAccount> dataList, int ResId) {
mInflater = LayoutInflater.from(context);
historyAccountData = dataList;
item_ResID = ResId;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public void setmOnItemClickListener(OnItemClickListener mOnItemClickListener) {
this.mOnItemClickListener = mOnItemClickListener;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = mInflater.inflate(item_ResID, viewGroup, false);
relativeLayout = (RelativeLayout) view.findViewById(R.id.item_account_layout);
WindowManager wm = (WindowManager) MyApplication.getInstance().getApplicationContext()
.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = DimenUtil.dp2px(120);
int dataSize = getItemCount();
if (dataSize <= 2) {
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(width / dataSize, height));
} else {
relativeLayout.setLayoutParams(new RelativeLayout.LayoutParams(width / 3, height));
}
ViewHolder viewHolder = new ViewHolder(view);
viewHolder.accountImg = (ImageView) view.findViewById(R.id.common_portrait_iv);
viewHolder.deleteImg = (ImageView) view.findViewById(R.id.portrait_delete_icon);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
AvatarUtil.setContacterAvatar(viewHolder.accountImg, null, historyAccountData.get(i).avatarUrl);
if (bDelIconShow) {
viewHolder.deleteImg.setVisibility(View.VISIBLE);
} else {
viewHolder.deleteImg.setVisibility(View.GONE);
}
if (mOnItemClickListener != null) {
viewHolder.accountImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItemClickListener.onItemClick(viewHolder.accountImg, viewHolder.getPosition());
}
});
viewHolder.deleteImg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// int position = viewHolder.getLayoutPosition();
mOnItemClickListener.onItemClick(viewHolder.deleteImg, viewHolder.getPosition());
}
});
viewHolder.accountImg.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mOnItemClickListener.onItemLongClick(viewHolder.accountImg, viewHolder.getPosition());
bDelIconShow = true;
notifyDataSetChanged();
return false;
}
});
}
}
@Override
public int getItemCount() {
return historyAccountData.size();
}
public HistoryAccount getItem(int pos) {
return historyAccountData.get(pos);
}
public void setDeleteIconState(boolean isShow) {
bDelIconShow = isShow;
}
public void removeData(int position) {
Log.i(tag, "position: " + position + ",size: " + historyAccountData.size());
historyAccountData.remove(position);
notifyItemRemoved(position);
}
public static class ViewHolder extends RecyclerView.ViewHolder {
// 账户头像
ImageView accountImg;
// 删除图标
ImageView deleteImg;
public ViewHolder(View itemView) {
super(itemView);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment