Android(安卓)- 滚动ListView的适配器
16lz
2021-01-24
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()); } }}
更多相关文章
- 【Android】Intent中使用Extra传递数据
- Android(安卓)JSON数据与实体类之间的相互转化-------GSON实现
- 【高通SDM660平台 Android(安卓)10.0】(11) --- Eeprom lib 与 K
- android 使用SharedPreferences保存list数据
- Android(安卓)积累一些RxJava2.0有关的知识
- android中SharedPerferences保存数据
- android手记之----Activity
- Android(安卓)TabHost的使用
- Android传感器的介绍