Last active
August 18, 2016 03:43
-
-
Save spiritedRunning/5e2bbb683f876baabe5e7df7c03b645c to your computer and use it in GitHub Desktop.
横向RecyclerView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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