0
点赞
收藏
分享

微信扫一扫

Android adapter设计模式二:使用base-adapter-helper



base-adapter-helper 是对我们传统的BaseAdapter的ViewHolder的模式的一个抽象。主要功能就是简化我们在书写AbsListView,例如ListView,GridView的Adapter的代码。

特点

提供QucikAdapter,极大简化我们的代码。
BaseAdapterHelper中封装了大量用于为View操作的辅助方法,例如从网络加载图片:

helper.setImageUrl(R.id.iv_photo, item.getPhotoUrl());

1.base-adapter-helper下载地址:
​​​https://github.com/hongyangAndroid/base-adapter-helper​​

2、使用方法:

private void initDatas() {
mDatas = new ArrayList<Person>();
for (int i = 0; i < Cheeses.NAMES.length; i++) {
Person person = new Person(Cheeses.NAMES[i]);
mDatas.add(person);
Collections.sort(mDatas);
//Collections.sort(mDatas, comparator);
}
}
private void initViews() {
mListView = (ListView) findViewById(R.id.lv_index);
mAdapter.addAll(mDatas);
mListView.setAdapter(mAdapter);

}

private QuickAdapter<Person> mAdapter = new QuickAdapter<Person>(this, R.layout.item_quickindex) {
@Override
protected void convert(BaseAdapterHelper helper, Person item) {
//开始分组
String str = null;
String currentLetter = item.getPinyin().charAt(0) + "";
// 根据上一个首字母,决定当前是否显示字母
int position = helper.getPosition();
if(position == 0){
str = currentLetter;
}else {
// 上一个人的拼音的首字母
String preLetter = mDatas.get(position - 1).getPinyin().charAt(0) + "";
if(!TextUtils.equals(preLetter, currentLetter)){
str = currentLetter;
}
}

// 根据str是否为空,决定是否显示索引栏
helper.setVisible(R.id.tv_index, str == null ? false:true);
helper.setText(R.id.tv_index, currentLetter);
helper.setText(R.id.tv_name, item.getName());
}
};


举报

相关推荐

0 条评论