# 特性
1、根据数据源,自动**排序生成**字母索引Bar(非字母开头,索引为"#",另可自由定制),以及HeaderTitle
2、非常自由的 添加各种HeaderView/FooterView,包括自定义索引,HeaderTitle,各种View等等
3、HeaderTitle是粘性的(Sticky)
4、UI自由定制、拓展;提供2种悬浮提示View,常规居中 以及 MD风格的右侧气泡
5、绑定数据源,通过单线程的线程池优化,不怕重复绑定数据
6、使用[TinyPinyin](https://github.com/promeG/TinyPinyin)代替Pinyin4j.jar库,体积更小,拼音转化速度提升4倍!
# 更新日志
1.3.0
* 多音字借助TinyPinyin处理
* 可以自定义排序方式
1.2.4
* Fix 数据变动时,StickTitle不及时更新问题;增加2处安全校验
1.2.0
* 支持GridLayoutManager! (感谢[guodongAndroid](https://github.com/guodongAndroid))
1.0.7
* 默认不再显示左侧的悬浮气泡
* 默认排序方式改为快速排序,提供一个MODE_NONE的排序方式
1.0.5
为HeaderView/FooterView添加:
* `indexableLayout.removeHeaderAdapter();`
* `headerAdapter.addData()`
* `headerAdapter.removeData()`
# 如何使用
### gradle
项目下app的build.gradle中依赖:
````xml
compile 'me.yokeyword:indexablerecyclerview:1.3.0'
compile 'com.android.support:appcompat-v7:你使用的版本号'
compile 'com.android.support:recyclerview-v7:你使用的版本号'
````
### Xml
````xml
* 使用mLastInvisibleRecyclerViewItemView来保存当前Invisible的ItemView,
* 每次有新的ItemView需要Invisible的时候,把旧的Invisible的ItemView设为Visible。
* 这样就修复了View复用导致的Invisible状态传递的问题。
*/
private View mLastInvisibleRecyclerViewItemView;
private boolean mSticyEnable = true;
private RecyclerView.ViewHolder mStickyViewHolder;
private String mStickyTitle;
private RealAdapter mRealAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private IndexableAdapter mIndexableAdapter;
private TextView mCenterOverlay, mMDOverlay;
private int mBarTextColor, mBarFocusTextColor;
private float mBarTextSize, mBarTextSpace, mBarWidth;
private Drawable mBarBg;
private DataObserver mDataSetObserver;
private int mCompareMode = MODE_FAST;
private Comparator mComparator;
private Handler mHandler;
private HeaderFooterDataObserver