实现多种item有许多种方式,我们这里就用RecyclerView提供给我们的方式,getItemViewType。
这个方法是RecyclerView专门开放给我们用来实现多item类型的方法,所以他是最优雅的。
我仔细看过源码,这种方式用来实现多种Item,绝对是丝毫不影响性能的,请放心使用。
以即时通讯app为例子,你肯定要有一左一右的对话框吧。
所以在Adapter中先定义这两种ViewHolder。
private static class MeViewHolder extends RecyclerView.ViewHolder { TextView mTvMyMsg; ImageView mIvMyAvatar; public MeViewHolder(View view) { super(view); mTvMyMsg = (TextView) view.findViewById(R.id.tv_my_msg); mIvMyAvatar = (ImageView) view.findViewById(R.id.iv_my_avatar); } } private static class FriendViewHolder extends RecyclerView.ViewHolder { TextView mTvFriendMsg; ImageView mIvFriendAvatar; public FriendViewHolder(View view) { super(view); mTvFriendMsg = (TextView) view.findViewById(R.id.tv_friend_msg); mIvFriendAvatar = (ImageView) view.findViewById(R.id.iv_friend_avatar); } }getItemViewType方法,我这里list装的是bean,每个bean里都有一个,0代表我自己的对话,1代表对方的对话。
@Override public int getItemViewType(int position)