自定义SectionAdapter显示数据
来源:互联网 发布:宁知此为归骨所耶翻译 编辑:程序博客网 时间:2024/03/29 13:53
转载请注明转自:noyet12的博客
博客原址:http://blog.csdn.net/u012975705/article/details/50238269
源码下载csdn
源码下载github
前言
之前在项目中需要在一个ScrollView中显示2个不同类型的列表,因为就2个列表,所以偷了下懒:直接使用的2个ListView来显示。写完之后怎么看怎么别扭,今天抽空学习写了个SectionAdapter,mark下。
实现效果
主要代码
package com.noyet.zzj.sectionadapterdemo;import android.content.Context;import android.util.SparseArray;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;/** * package: com.noyet.zzj.sectionadapterdemo * Created by noyet on 2015/12/9. */public class SectionAdapter extends SectionBaseAdapter<SectionItem> { public SectionAdapter(Context context, SparseArray<SectionItem> mSectionItems) { super(context, mSectionItems); } @Override public int getItemViewType(int position) { int titlePos = 0; for (int i = 0; i < mTypeCount; i++) { SectionItem sectionItem = getItemSection(titlePos); int size = sectionItem.getCount() + 1; if (position < size) { return position; } position -= size; titlePos++; } return -1; } @Override public int getViewTypeCount() { return mTypeCount; } @Override public int getCount() { int total = 0; for (int i = 0; i < mTypeCount; i++) { total += getItemSection(i).getCount() + 1; } return total; } @Override public Object getItem(int position) { int titlePos = 0; for (int i = 0; i < mTypeCount; i++) { SectionItem sectionItem = getItemSection(titlePos); int size = sectionItem.getCount() + 1; if (position < size) { return sectionItem; } position -= size; titlePos++; } return null; } @Override public long getItemId(int position) { return (long) position; } @Override public View getView(int position, View convertView, ViewGroup parent) { SectionItem item = (SectionItem) getItem(position); int itemPos = getItemViewType(position); ViewHolder holder; if (itemPos == TYPE_SECTION_HEADER) { if (convertView == null) { convertView = mInflater.inflate(R.layout.item_title_section, null); holder = new ViewHolder(); holder.textView = (TextView) convertView.findViewById(R.id.text_title); holder.imageView = (ImageView) convertView.findViewById(R.id.text_title_iv); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.imageView.setImageResource(android.R.drawable.ic_dialog_dialer); holder.textView.setText(item.getTitle()); return convertView; } else { if (convertView == null) { convertView = mInflater.inflate(R.layout.item_content_section, null); holder = new ViewHolder(); holder.textView = (TextView) convertView.findViewById(R.id.text_content); convertView.setTag(R.id.tag_data, holder); } else { holder = (ViewHolder) convertView.getTag(R.id.tag_data); } String content = item.getItem(itemPos - 1).toString(); holder.textView.setText(content); convertView.setTag(R.id.tag_id, content); convertView.setOnClickListener(listener); return convertView; } } private View.OnClickListener listener = new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, (String) v.getTag(R.id.tag_id), Toast.LENGTH_SHORT).show(); } }; static class ViewHolder { TextView textView; ImageView imageView; }}
package com.noyet.zzj.sectionadapterdemo;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.SparseArray;import android.widget.ListView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { private SectionAdapter mAdapter; private SparseArray<SectionItem> mSectionItems; private List<String> list; private ListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.list_view); mSectionItems = new SparseArray<>(); list = new ArrayList<>(); list.add("like me 1"); list.add("like me 2"); list.add("like me 3"); for (int i = 0; i < 10; i++) { SectionItem<String> sectionItem = new SectionItem<>(this, "title" + i, list); mSectionItems.put(i, sectionItem); } mAdapter = new SectionAdapter(this, mSectionItems); mListView.setAdapter(mAdapter); }}
1 0
- 自定义SectionAdapter显示数据
- 自定义progressBar显示静态数据
- 异步加载网络数据,自定义进度条显示
- 异步加载网络数据,自定义进度条显示
- 异步加载网络数据,自定义进度条显示
- 异步加载网络数据,自定义进度条显示
- 添加自定义数据到TensorBoard显示
- echarts 自定义按钮控制数据的显示
- 自定义的数据集合对象的自定义排序和显示
- gridview显示数据每*(自定义)行显示一空行
- 使用数据绑定和 WPF 自定义数据显示
- DBGRID自定义数据字段显示(导出)实现一例
- 对gridview绑定数据的操作方法,自定义显示内容
- iPhone开发之异步加载网络数据,自定义进度条显示
- flex 自定义LineChart的数据字段的显示格式 dataFunction
- jsp自定义标签库实现数据列表显示
- 让VS调试器帮你格式化显示自定义数据
- DevExpress中自定义CellTemplate数据绑定不显示的问题
- android Installation failed due to invalid URI! 错误处理
- Java的HashMap和HashTable
- Android 中获取 debug 测试 SHA1 和 release SHA1 证书指纹数据的方法
- css3之background-origin和background-clip的区别与联系
- Android之UID and PID
- 自定义SectionAdapter显示数据
- JQuery解析XML
- http://cssload.net/----动画
- Leetcode189: Peeking Iterator
- .net(c#)操作IIS大全
- 源码推荐(12.09):超强 AFN 封装,一行搞定自适应label&适配iPhone
- Struts2的运行流程及其工作原理
- Luajit反编译之探索记
- 一步一步学习TypeScript(07.Any类型)