Android Listview加载不同布局
来源:互联网 发布:ios手机休眠关闭网络 编辑:程序博客网 时间:2024/05/21 14:24
转:http://www.cnblogs.com/1426837364qqcom/p/5336494.html
方法:
通过BaseAdapter的getViewTypeCount()获取Item种类数量,然后在getView()方法中根据不同的type设置不同的item布局 (操作麻烦,维护方便)
根据需求设置布局的显示隐藏效果 (操作方便,维护麻烦 )
下面展示第一种
主页面布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" > <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /></RelativeLayout>
第一种item布局(只有文字)
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="36sp" android:background="#f00" /></LinearLayout>
第二种item布局 (图片加文字)
package com.ch.baseadapterdemo;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;public class MainActivity extends Activity { private ListView lv; ArrayList<ItemB> bs = new ArrayList<ItemB>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); getData(); lv.setAdapter(new MyAdapter()); } public void getData(){ bs.add(new ItemB(R.drawable.ic_launcher, "zzz0", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz1", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz2", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz3", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz4", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz5", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz6", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz7", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz8", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz9", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz10", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz11", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz13", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz14", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz15", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz16", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz17", 1)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz18", 0)); bs.add(new ItemB(R.drawable.ic_launcher, "zzz19", 1)); } class MyAdapter extends BaseAdapter{ public static final int ITEM_TITLE = 0; public static final int ITEM_INTRODUCE = 1; LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); @Override public int getCount() { // TODO Auto-generated method stub return bs.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return bs.get(position); } @Override public int getItemViewType(int position) { // TODO Auto-generated method stub //判断依据 return bs.get(position).getType(); } @Override public int getViewTypeCount() { // TODO Auto-generated method stub //布局个数 return 2; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub int type = getItemViewType(position); Holder1 holder1 = null; Holder2 holder2 = null; //优化 if (convertView == null) { //选择某一个样式。。 switch (type) { case ITEM_TITLE: convertView = inflater.inflate(R.layout.item_title, null); holder1 = new Holder1(); holder1.play_title = (TextView) convertView.findViewById(R.id.title); //赋值 holder1.play_title.setText(bs.get(position).getName()); convertView.setTag(holder1); break; case ITEM_INTRODUCE: convertView = inflater.inflate(R.layout.item_children,null); holder2 = new Holder2(); holder2.play_info = (TextView) convertView.findViewById(R.id.info); holder2.play_img = (ImageView) convertView.findViewById(R.id.img); //赋值 holder2.play_img.setBackgroundResource(bs.get(position).getImg()); holder2.play_info.setText(bs.get(position).getName()); convertView.setTag(holder2); break; } } else { switch (type) { case ITEM_TITLE: holder1 = (Holder1) convertView.getTag(); holder1.play_title.setText(bs.get(position).getName()); break; case ITEM_INTRODUCE: holder2 = (Holder2) convertView.getTag(); holder2.play_info.setText(bs.get(position).getName()); holder2.play_img.setBackgroundResource(bs.get(position).getImg()); break; default: break; } } return convertView; } } // 两个样式 两个holder。100就写100holder。。当然你何以把他抽离出来这里先只为了说明问题 class Holder1 { TextView play_title; } class Holder2 { TextView play_info; ImageView play_img; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; }}
vo
package com.ch.baseadapterdemo;public class ItemB { private int img; private String name; private int type; public ItemB(int img, String name, int type) { super(); this.img = img; this.name = name; this.type = type; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getType() { return type; } public void setType(int type) { this.type = type; }
效果:
阅读全文
0 0
- android ListView加载不同布局
- android ListView加载不同布局
- Android Listview加载不同布局
- Android listview 加载不同的布局实现
- listView加载不同布局
- ListView加载不同布局
- ListView加载不同布局
- Listview加载不同布局
- listview加载不同布局
- ListView 加载不同布局
- Android ListView使用不同对象加载不同布局
- ListView中加载不同布局
- ListView加载不同的布局
- listView 加载不同布局item
- android listview item 加载不同的布局样式文件
- Android Listview加载不同布局,ViewHolder类型转换异常!!!
- Android listview加载不同布局与adapter用法
- Android Listview加载不同布局,ViewHolder类型转换异常!!!
- qbday1
- 如何将excel格式的中国三级地址文件转换成android需要的json格式的文件(一)
- Python-OpenCV中argparse的使用
- ubuntu 16.04 上不了网?DSL消失?更新网卡驱动?
- 如何在微信小程序的页面间传递数据?
- Android Listview加载不同布局
- stuff list of python
- c语言
- epoll模型的EPOLLLT模式和EPOLLET模式比较
- 根据multiselect选择的字段导出csv
- idea实体类注解生成表
- JAVA获取数组中最大值及其下标
- 若你要开源自己的代码,此文带你了解开源协议
- thinkphp5.0学习(四):入口文件、路由模式、路由设置和url生成