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());        }    }}

更多相关文章

  1. 【Android】Intent中使用Extra传递数据
  2. Android(安卓)JSON数据与实体类之间的相互转化-------GSON实现
  3. 【高通SDM660平台 Android(安卓)10.0】(11) --- Eeprom lib 与 K
  4. android 使用SharedPreferences保存list数据
  5. Android(安卓)积累一些RxJava2.0有关的知识
  6. android中SharedPerferences保存数据
  7. android手记之----Activity
  8. Android(安卓)TabHost的使用
  9. Android传感器的介绍

随机推荐

  1. 使用python如何在列表列表中找到元素,而关
  2. windows下多版本python安装
  3. 在python中创建指数函数。
  4. 你怎么检查python字符串是否只包含数字?
  5. python-selenium-定位一组对象
  6. Python学习记录--关于列表和字典的比较
  7. scikit-learn:在标记化时不要分隔带连字符
  8. 分析标签集的最佳方法是什么?
  9. 学习Python爬虫(五):爬取图片
  10. python飞船游戏(三)