<commit_before>##PowerfulRecyclerAdapter
RecyclerView.Adapter.的一种实现,支持任意类型的Item，是一个通用适配器


**特性：**

- 使用DataBean关联Data(Model)与ViewHolder,DataBean相当于Data的Wrapper;
- DataBean控制ViewHolder的创建以及数据到ViewHolder的绑定；
- Adapter的一部分职能由DataBean承担，如创建不同类型的ViewHolder以及绑定数据到ViewHolder,Adapter只用维护数据的相关操作即可；
- Adapter的onCreateViewHolder()和onBindViewHolder()中没有switch..case语句，通过DataBean的多态性实现不同的创建和绑定；
- 使用了本项目的Adapter,使用RecyclerView时就不用写Adapter了；
- 一个列表可以有任意多种item(对应于任意种类的ViewHolder)
- 使用接口关联DataBean和ViewHolder可以提高ViewHolder及Data的复用性，并且利于测试。

**新特性：**
    2016-4-16 添加：
    1.在BaseRecyclerViewHolder中新增了一些有用的api以简化ViewHolder的编写，例如setText(id,text),setImageBitmap(id,bitmap)等；
    2.在BaseRecyclerAdapter中添加了一些友好的，有用的api,例如removeData(data),removeFirst(),removeLast()等;
    3.使用SparseArray缓存ViewHolder中的View,如需了解细节，请看BaseRecyclerViewHolder的源码。
	2016-4-10 添加：
	新增 @DataBean 注解,目前在[dev分支]上
	使用类似Dagger2和DataBinding的编译期注解处理器，在编译器根据模板生成DataBean代码（模板引擎），这样可以省去编写DataBean的成本。
	参考下文[使用DataBean注解]

dev分支：https://github.com/simplify20/PowerfulRecyclerViewAdapter/tree/dev
###类图：
	tips:图片看不清可右键另存或新标签页打开后查看
![这里写图片描述](http://img.blog.csdn.net/20160330181333561)
###主要类：

`class CommonRecyclerAdapter`：万能适配器，支持插入和删除数据,支持任意类型的ViewHolder(限于RecyclerView)

`interface DisplayBean`：用于创建ViewHolder

`interface DataBean`：扩展了DisplayBean接口，可以绑定数据到ViewHolder，也可以创建ViewHolder,是数据与ViewHolder之间的桥梁

###使用步骤：

- 使用CommonRecyclerAdapter作为RecyclerView的Adapter；
```java
 protected CommonRecyclerAdapter adapter;
 ...
 recyclerView.setAdapter(adapter);
```
- 根据item内容，继承BaseDataBean，实现自定义的DataBean；
```java
public class BookTitleBean extends BaseDataBean<Book, BookTitleViewHolder> {
<commit_msg>update README-CN.md<commit_after>##PowerfulRecyclerAdapter
RecyclerView.Adapter.的一种实现,支持任意类型的Item，是一个通用适配器


**特性：**

- 使用DataBean关联Data(Model)与ViewHolder,DataBean相当于Data的Wrapper;
- DataBean控制ViewHolder的创建以及数据到ViewHolder的绑定；
- Adapter的一部分职能由DataBean承担，如创建不同类型的ViewHolder以及绑定数据到ViewHolder,Adapter只用维护数据的相关操作即可；
- Adapter的onCreateViewHolder()和onBindViewHolder()中没有switch..case语句，通过DataBean的多态性实现不同的创建和绑定；
- 使用了本项目的Adapter,使用RecyclerView时就不用写Adapter了；
- 一个列表可以有任意多种item(对应于任意种类的ViewHolder)
- 使用接口关联DataBean和ViewHolder可以提高ViewHolder及Data的复用性，并且利于测试。

**新特性：**
    2016-4-16 添加：
    1.在BaseRecyclerViewHolder中新增了一些有用的api以简化ViewHolder的编写，例如setText(id,text),setImageBitmap(id,bitmap)等；
    2.在BaseRecyclerAdapter中添加了一些友好的，有用的api,例如removeData(data),removeFirst(),removeLast()等;
    3.使用SparseArray缓存ViewHolder中的View,如需了解细节，请看BaseRecyclerViewHolder的源码。
	2016-4-10 添加：
	新增 @DataBean 注解,目前在[dev分支]上
	使用类似Dagger2和DataBinding的编译期注解处理器，在编译器根据模板生成DataBean代码（模板引擎），这样可以省去编写DataBean的成本。
	参考下文[使用DataBean注解]


###类图：
	tips:图片看不清可右键另存或新标签页打开后查看
![这里写图片描述](http://img.blog.csdn.net/20160330181333561)
###主要类：

`class CommonRecyclerAdapter`：万能适配器，支持插入和删除数据,支持任意类型的ViewHolder(限于RecyclerView)

`interface DisplayBean`：用于创建ViewHolder

`interface DataBean`：扩展了DisplayBean接口，可以绑定数据到ViewHolder，也可以创建ViewHolder,是数据与ViewHolder之间的桥梁

###使用步骤：

- 使用CommonRecyclerAdapter作为RecyclerView的Adapter；
```java
 protected CommonRecyclerAdapter adapter;
 ...
 recyclerView.setAdapter(adapter);
```
- 根据item内容，继承BaseDataBean，实现自定义的DataBean；
```java
public class BookTitleBean extends BaseDataBean<Book, BookTitleViewHolder> {

{'fraction_non_alphanumeric': 0.10173160173160173, 'fraction_numerical': 0.022263450834879406, 'mean_word_length': 11.39463601532567, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6456442', 'n_tokens_mistral': 1674, 'n_tokens_neox': 1743, 'n_words': 98}