gradle
项目下app的build.gradle中依赖:

compile 'me.yokeyword:indexablerecyclerview:1.3.0' compile 'com.android.support:appcompat-v7:你使用的版本号' compile 'com.android.support:recyclerview-v7:你使用的版本号'

Xml

            // IndexBar:text lineSpace

3步集成
1、实体类实现IndexableEntity

public class CityEntity implements IndexableEntity {    ...    private String name;    private String pinyin;        @Override    public String getFieldIndexBy() {        return name;  // return 你需要根据该属性排序的field    }    @Override    public void setFieldIndexBy(String indexByField) {        this.name = indexByField; // 同上    }    @Override    public void setFieldPinyinIndexBy(String pinyin) {        this.pinyin = pinyin; // 保存排序field的拼音,在执行比如搜索等功能时有用 (若不需要,空实现该方法即可)    }}

2、继承IndexAdapter

public class CityAdapter extends IndexableAdapter {    private LayoutInflater mInflater;    public CityAdapter(Context context) {        mInflater = LayoutInflater.from(context);    }    @Override    public RecyclerView.ViewHolder onCreateTitleViewHolder(ViewGroup parent) {        View view = mInflater.inflate(R.layout.recycler_view_item_city_title, parent, false);        return new IndexVH(view);    }    @Override    public RecyclerView.ViewHolder onCreateContentViewHolder(ViewGroup parent) {        View view = mInflater.inflate(R.layout.recycler_view_item_city, parent, false);        return new ContentVH(view);    }    @Override    public void onBindTitleViewHolder(RecyclerView.ViewHolder holder, String indexTitle) {        IndexVH vh = (IndexVH) holder;        vh.tv.setText(indexTitle);    }    @Override    public void onBindContentViewHolder(RecyclerView.ViewHolder holder, CityEntity entity) {        ContentVH vh = (ContentVH) holder;        vh.tv.setText(entity.getFieldIndexBy());    }    private class IndexVH extends RecyclerView.ViewHolder {        TextView tv;        public IndexVH(View itemView) {            super(itemView);            tv = (TextView) itemView.findViewById(R.id.tv_item);        }    }    private class ContentVH extends RecyclerView.ViewHolder {        TextView tv;        public ContentVH(View itemView) {            super(itemView);            tv = (TextView) itemView.findViewById(R.id.tv_name);        }    }

3、绑定视图和数据

// 支持LinearLayoutManager, GridLayoutManagerindexableLayout.setLayoutManager(LayoutManager);CityAdapter adapter = new CityAdapter(this);indexableLayout.setAdapter(adapter);// 排序过程是异步的 另有setDatas(mDatas,IndexCallback callback)  // callback在datas异步排序结束后回调adapter.setDatas(mDatas);// 另有setOnItemTitleClickListener(listener),点击TitleItem点击事件以及LongClickadapter.setOnItemContentClickListener(listener);

更多相关文章

  1. Android新架构组件之Navigation
  2. ListActivity的使用
  3. Android(安卓)绑定远程服务出现 Not Allowed to bind service
  4. 升级SDK后,出现这个:This Android(安卓)SDK requires Android(安卓
  5. Android(安卓)四大组件 - 进程的 fork 创建过程
  6. Android开发应用异步检查更新代码
  7. Android(安卓)GridView宫格视图(一) 运用--BaseAdapter
  8. Android(安卓)Camera2 Opengles2.0 图像实时滤镜 显示 视频编码
  9. Android(安卓)前沿UI

随机推荐

  1. Android同一图片在不同分辨率下长宽不同
  2. android打开一个activity时,什么情况使用f
  3. 关于android混合开发模式Hybrid逻辑梳理
  4. 人人都是 Android(安卓)开发者 - Android
  5. android修改按键的映射
  6. 从破解APP开始学Android——用户登录验证
  7. Android(安卓)创建与解析XML(二)---- DOM方
  8. 实习第四天——边学边做,手忙脚乱
  9. Android(安卓)多个输入框的自动跳转
  10. VisionMobile:2012年移动开发者经济报告(六