先介绍下为什么这么做,因为RecyclerView需要一个javabean,同时呢,对于整个系统中的一个对象,也需要建造一个javabean。但是很明显,RecyclerView中的那个bean显然是整个系统中那个对象javabean的子集。所以我觉得不应该专门为RecyclerView设置一个bean,你想要给他什么数据,多传几个集合不就好了?为什么一定要并在一个集合里?所以我认为,javabean反而是最容易忽视,也是最高的耦合度的体现。
本来的List---List<XxxxBean>
现在的List---List<String> List<Bitmap> List<...>
(我觉得下面那种才是健康,更容易维护的形式!!!用户要改需求,增加一个List就可以和一行绑定的代码就可以!!!)
先看一下我的除了通用的ViewHolder和通用的Adapter之外的所有代码
CommonAdapter adapter = new CommonAdapter<String, Bitmap, String, String, String>(this,R.layout.item, stringList, bitmapList, null, null, null) { @Override protected void convert(CommonViewHolder holder, int position, String s, Bitmap bitmap, String s2, String s3, String s4) { ((TextView)((ViewGroup)holder.getItemView()).getChildAt(0)).setText(s); ((ImageView)((ViewGroup)holder.getItemView()).getChildAt(1)).setImageBitmap(bitmap); } }; mRv.setAdapter(adapter); mRv.setLayoutManager(new LinearLayoutManager(this));
这里我就使用了两个数据类型,一个String,一个是Bitmap,后面的泛型不得不指定,就瞎指定了几个(也可以像rxjava写9个类,这样就可以动态指定泛型个数了)。整个流程下来,就是舒服二字!
假如说这是一个聊天系统,用户一开始说,他要的是String类型的,因为只发文本就可以了 。但是他心思变的很快,说,我想要一个通用的消息类型&#