




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】android的ListView图文混搭
main4.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/listView4_1_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView>
</LinearLayout>main4_item.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<ImageView
android:id="@+id/p_w_picpathView4_1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
<TextView
android:id="@+id/textView4_1_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="textView"
/>
</LinearLayout>MainActivity4package
com.example.listview;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
android.R.anim;
import
android.R.drawable;
import
android.app.Activity;
import
android.os.Bundle;
import
android.widget.ListView;
import
android.widget.SimpleAdapter;
public
class
MainActivity4
extends
Activity{
private
ListView
listView;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
//
TODO
Auto-generated
method
stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main4);
listView=(ListView)
findViewById(R.id.listView4_1_1);
//一个列表项的内容
Map<String,
Object>
map=new
HashMap<String,
Object>();
map.put("p_w_picpath",
R.drawable.ic_launcher);
map.put("name",
"张三");
Map<String,
Object>
map2=new
HashMap<String,
Object>();
map2.put("p_w_picpath",
R.drawable.ic_launcher);
map2.put("name",
"王五");
List<Map<String,
Object>>
list=new
ArrayList<Map<String,Object>>();
list.add(map);
list.add(map2);
SimpleAdapter
simpleAdapter=new
SimpleAdapter(this,
list,
R.layout.main4_item,
new
String
[]
{"p_w_picpath","name"},
new
int
[]
{R.id.p_w_picpathView4_1_1,R.id.textView4_1_1});
listView.setAdapter(simpleAdapter);
}
}亦可以自定义Adaptermian5.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/listView5_1_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView>
</LinearLayout>main5_item.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<ImageView
android:id="@+id/p_w_picpathView5_1_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/a"
/>
<TextView
android:id="@+id/textView5_1_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="textView"
/>
</LinearLayout>MainActivity5package
com.example.listview;
import
android.app.Activity;
import
android.os.Bundle;
import
android.view.LayoutInflater;
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
MainActivity5
extends
Activity
{
private
ListView
listView;
//定义的数据
private
int
[]
p_w_picpaths={R.drawable.ic_launcher,R.drawable.ic_launcher};
private
String
[]
names={"xiaobai","xiaoming"};
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
//
TODO
Auto-generated
method
stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main5);
listView=(ListView)
findViewById(R.id.listView5_1_1);
listView.setAdapter(new
MyAdapter());
}
//自定义适配器
class
MyAdapter
extends
BaseAdapter{
//获取列表项总数
@Override
public
int
getCount()
{
//
TODO
Auto-generated
method
stub
return
names.length;
}
//获取每一个列表项(根据下标获取)
@Override
public
Object
getItem(int
position)
{
//
TODO
Auto-generated
method
stub
return
names[position];
}
//获取每一个列表项的id
@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
//获取布局填充器
LayoutInflater
layoutInflater=getLayoutInflater();
//获取main5_item的布局模板
View
view=layoutInflater.inflate(R.layout.main5_item,
null);
//从得到的view查找相应view
ImageView
p_w_picpathView=(ImageView)
view.findViewById(R.id.p_w_picpathView5_1_1);
TextView
textView=(TextView)
view.findViewById(R.id.textView5_1_1);
p_w_picpathView.setImageResource(p_w_picpaths[position]);
textView.setText(names[position]);
return
view;
}
}
}这种方式会多次调用getView()方法优化方法main5.xml<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/listView5_1_1"
android:layout_width="match_parent"
android:layout_height="fill_parent"
></ListView>
</LinearLayout>
<!--
android:layout_height="wrap_content"
会导致在ListView中增加子组件时,多次重复调用getView方法
设置成
android:layout_height="fill_parent"
则每次增加新组建时调用一次
-->ListView设置成
android:layout_height="fill_parent"//屏幕一次显示7(假设)条记录,则调用7次getView方法,只负责在屏幕中显示的内容的创建,其他的在滑动显示时才创建
//因为ListView的高度设置为
android:layout_height="wrap_content"
//调用一次getView,绘制一次,增加子组件时会重新绘制(计算高度),所以会多次调用getView()方法
//增加一个组件,重新绘制ListView,
//每绘制一次ListView,每一个子组件都重新绘制(有几个子组件调用几次)
//ListView设置成
android:layout_height="fill_parent"
//只输出0,1,2,3,4,5一次
System.out.println("position:"+position);将activity中代码修改为: System.out.print("position:"+position);
System.out.println("
"+convertView);
//获取布局填充器
LayoutInflater
layoutInflater=getLayoutInflater();
//获取main5_item的布局模板,创建布局对象
//如果没有空闲的convertView,创建convertView,否则重复利用convertView
if(convertView==null){
convertView=layoutInflater.inflate(R.layout.main5_item,
null);
}convertView的使用,主要优化加载布局问题
增加优化二:内部类ViewHolder的使用。主要优化getView方法中每次回调用findviewByID()方法来获取一次控件的代码。新增加内部类ViewHolder,用于对控件的实力存储进行缓存。package
com.example.listview;
import
android.app.Activity;
import
android.os.Bundle;
import
android.view.LayoutInflater;
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
MainActivity5
extends
Activity
{
private
ListView
listView;
//定义的数据
private
int
[]
p_w_picpaths={R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};
private
String
[]
names={"xiaobai","xiaoming","xiaobai","xiaoming","xiaobai","xiaoming","xiaobai","xiaoming","xiaobai","xiaoming","xiaobai","xiaoming"};
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
//
TODO
Auto-generated
method
stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main5);
listView=(ListView)
findViewById(R.id.listView5_1_1);
listView.setAdapter(new
MyAdapter());
}
//自定义适配器
//ListView的优化:
//1.重复使用convertView对象
//2.使用viewHolder提高在容器中查找组件的效率
class
MyAdapter
extends
BaseAdapter{
//获取列表项总数
@Override
public
int
getCount()
{
//
TODO
Auto-generated
method
stub
return
names.length;
}
//获取每一个列表项(根据下标获取)
@Override
public
Object
getItem(int
position)
{
//
TODO
Auto-generated
method
stub
return
names[position];
}
//获取每一个列表项的id
@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
//屏幕一次显示7(假设)条记录,则调用7次getView方法,只负责在屏幕中显示的内容的创建,其他的在滑动显示时才创建
//因为ListView的高度设置为
android:layout_height="wrap_content"
//调用一次getView,绘制一次,增加子组件时会重新绘制(计算高度),所以会多次调用getView()方法
//增加一个组件,重新绘制ListView,
//每绘制一次ListView,每一个子组件都重新绘制(有几个子组件调用几次)
//ListView设置成
android:layout_height="fill_parent"
//只输出0,1,2,3,4,5一次
System.out.print("position:"+position);
System.out.println("
"+convertView);
//获取布局填充器
LayoutInflater
layoutInflater=getLayoutInflater();
//获取main5_item的布局模板,创建布局对象
//如果没有空闲的convertView,创建convertView,否则重复利用convertView
ViewHolder
viewHolder;
if(convertView==
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保安证知识要点提炼试题及答案
- 西安英语抽考题目及答案
- 吉林省海门市重点名校2024届中考猜题数学试卷含解析
- 建湖实中教育集团达标名校2024届中考数学考前最后一卷含解析
- 水电工施工方案
- 山东大学《信息检索与阅读》2023-2024学年第一学期期末试卷
- 广西工程职业学院《人权法》2023-2024学年第二学期期末试卷
- 濮阳医学高等专科学校《皮肤性病护理学》2023-2024学年第二学期期末试卷
- 2025年广东省广州市广东第二师范学院番禺附中高三第二次模拟考试试卷历史试题含解析
- 广西信息职业技术学院《短片写作》2023-2024学年第二学期期末试卷
- 自考中国古代文学史(一)课件(2012-3-18)
- 复用医疗器械预处理课件
- 2022年江西科技职业学院单招综合素质考试笔试试题及答案解析
- 纪念世界反法西斯战争暨中国人民抗日战争胜利70周年课件
- 武术竞赛评分表
- 陶瓷新思维之陶瓷烧成
- 2022年海南省人民医院医护人员招聘考试笔试题库及答案解析
- 中国园林山水文化分析(85张PPT)课件
- 风险分级管控74411ppt课件(PPT 146页)
- GB∕T 17215.231-2021 电测量设备(交流) 通用要求、试验和试验条件 第31部分:产品安全要求和试验
- 《道德与法治》五年级下册全册教案
评论
0/150
提交评论