Android - 滚动ListView的适配器
2015-07-30 21:00
645 查看
IndexScrollerAdapter是滚动ListView的适配器. 继承G7BaseAdapter, 并重载viewForObject()函数, 实现根据不同的Object, 使用不同的ViewHolder.
package me.chunyu.widget.widget; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.io.Serializable; import me.chunyu.G7Annotation.Adapter.G7BaseAdapter; import me.chunyu.G7Annotation.Adapter.G7ViewHolder; import me.chunyu.G7Annotation.Annotation.ViewBinding; import me.chunyu.G7Annotation.Utils.ViewBinder; import me.chunyu.widget.R; /** * 索引的适配器, 药品库的首字母快速滑动. * 通过字母和数据项的两个ViewHolder进行绑定. * 参考: {@link me.chunyu.widget.widget.IndexScroller} * <p/> * Created by C.L.Wang on 15/7/30. */ public class IndexScrollerAdapter extends G7BaseAdapter { private final Context mContext; public IndexScrollerAdapter(Context context) { super(context); mContext = context; } /** * 把数据填充到页面, 区分标题和数据, 使用不同的ViewHolder绑定. * * @param object 填充数据 * @param convertView 页面 * @param viewGroup 视图组 * @return 填充的页面 */ @Override public View viewForObject(Object object, View convertView, ViewGroup viewGroup) { GroupTitleViewHolder groupTitleViewHolder; // 标题 KnowledgeItemViewHolder knowledgeItemViewHolder; // 数据 // 标题 if (object instanceof GroupTitle) { if (null == convertView) { groupTitleViewHolder = new GroupTitleViewHolder(); convertView = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) .inflate(groupTitleViewHolder.getViewLayout((GroupTitle) object), viewGroup, false); ViewBinder.bindView(convertView, groupTitleViewHolder); convertView.setTag(R.id.tag_first, groupTitleViewHolder); convertView.setBackgroundResource(R.drawable.list_header_background); // 重载背景颜色 } else { groupTitleViewHolder = (GroupTitleViewHolder) convertView.getTag(R.id.tag_first); } groupTitleViewHolder.setData(mContext, (GroupTitle) object); } // 数据 if (object instanceof HealthItem) { if (null == convertView) { knowledgeItemViewHolder = new KnowledgeItemViewHolder(); convertView = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE)) .inflate(knowledgeItemViewHolder.getViewLayout((HealthItem) object), viewGroup, false); ViewBinder.bindView(convertView, knowledgeItemViewHolder); convertView.setTag(R.id.tag_first, knowledgeItemViewHolder); } else { knowledgeItemViewHolder = (KnowledgeItemViewHolder) convertView.getTag(R.id.tag_first); } knowledgeItemViewHolder.setData(mContext, (HealthItem) object); } return convertView; } // 单项 - 名称+首字母 @SuppressWarnings("unused") public static class HealthItem implements Serializable { private String name; // 标题 private String capital; // 首字母 private int nameOrder; public HealthItem(String name, String capital, int nameOrder) { this.name = name.trim(); this.capital = capital.trim(); this.nameOrder = nameOrder; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCapital() { return capital; } public void setCapital(String capital) { this.capital = capital; } public int getNameOrder() { return nameOrder; } public void setNameOrder(int nameOrder) { this.nameOrder = nameOrder; } } // 单项 public static class KnowledgeItemViewHolder extends G7ViewHolder<HealthItem> { @SuppressWarnings("unused") @ViewBinding(idStr = "cell_symptoms_list") private TextView mTextView; @Override public int getViewLayout(HealthItem myDocInfo) { return R.layout.cell_symptoms_list; } @Override protected void setData(final Context context, final HealthItem data) { mTextView.setText(data.getName()); } } // 标题项 public static class GroupTitleViewHolder extends G7ViewHolder<GroupTitle> { @SuppressWarnings("unused") @ViewBinding(idStr = "group_title") private TextView text; @Override public int getViewLayout(GroupTitle title) { return R.layout.list_group_title; } @Override protected void setData(final Context context, final GroupTitle data) { text.setText(data.getTitle()); } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories