ListView多布局展示
来源:互联网 发布:西门子触摸屏编程 编辑:程序博客网 时间:2024/05/17 03:37
实现代码
Adapter的代码
其中:ViewHolder分别是三个不同的布局,也就是ListView中每一项的布局
TYPE_1…是几种类型.
在使用不同布局的时候,getItemViewType和getViewTypeCount不能少,一般的同一种item的列表是不用这两个函数的重载的,但是如果需要不同种类的item,就必须重载这两个
public class MainActivity extends ActionBarActivity { private ListView lv; ArrayList<String> list=new ArrayList<String>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { for (int i = 0; i < 100; i++) { list.add("aaaaaaaaa"+i); } lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new MyAdapter()); } class MyAdapter extends BaseAdapter{ final int TYPE_1=0; final int TYPE_2=1; @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public int getItemViewType(int position) { int p=position; if (p%2==0) { return TYPE_1; }else{ return TYPE_2; } } @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 2; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub int gt = getItemViewType(position); ViewHolder viewHolder = null; ViewHolder2 viewHolder2=null; if (convertView==null) { switch (gt) { case TYPE_1: viewHolder= new ViewHolder(); convertView=convertView.inflate(MainActivity.this, R.layout.aa, null); viewHolder.tv=(TextView) convertView.findViewById(R.id.tv); convertView.setTag(viewHolder); break; case TYPE_2: viewHolder2= new ViewHolder2(); convertView=convertView.inflate(MainActivity.this, R.layout.aa2, null); viewHolder2.tv=(TextView) convertView.findViewById(R.id.tv); convertView.setTag(viewHolder2); break; default: break; } }else { switch (gt) { case TYPE_1: viewHolder=(ViewHolder) convertView.getTag(); break; case TYPE_2: viewHolder2=(ViewHolder2) convertView.getTag(); break; default: break; } } switch (gt) { case TYPE_1: viewHolder.tv.setText(list.get(position)); break; case TYPE_2: viewHolder2.tv.setText(list.get(position)); break; default: break; } return convertView; } class ViewHolder{ TextView tv; } class ViewHolder2{ TextView tv; } }}
0 0
- ListView多布局展示
- ListView多布局展示bug
- ListView展示两种布局
- 多条目展示ListView(如:有两种不同的布局图片在listview条目上展示)
- ListView多布局展示 异常 数组下标越界
- pullToRefreshView 加载多布局展示 数组下标越界(ListView相同)
- ListView多条目展示
- ListView多条目展示
- listview多条目展示
- listView 多条目展示
- ListView多条目展示
- listview多条目展示
- ListView多条目展示
- Listview(多条目展示)
- listview多条目展示
- ListView 多条目展示
- listview(多条目展示)
- ListView多条目展示
- poj1845——Sumdiv(数论+幂的因子和)
- 4.java 泛型的目标类型推断
- 2.3 流程和函数
- 用Shell根据AcessLog统计对应的点击量
- 每个人都应该学习一门编程语言
- ListView多布局展示
- 微擎图片上传组件
- jira插件破解步骤
- 十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。
- iOS开发之将字典NSDictionary转化为NSData数据
- Service
- 键盘输入字符数
- Windows编译curl源码
- 24点游戏设计