android_ListView的介绍_简单入门
来源:互联网 发布:大学生程序员兼职平台 编辑:程序博客网 时间:2024/05/28 15:03
ListView的应用场景
ListView在现实的生活中的案例:比如我们在使用微信的APP的时候,会在通讯录列表中,使用到.
为什么ListView在微信中使用到呢?
如果数据足够多的情况下,我们不适用ListView这种做法,很有可能导致内存溢出,
不使用ListView的方式去实现列表功能
页面布局
<Button android:onClick="selectStu" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="查询学生信息" /><ScrollView android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/ll" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" > </LinearLayout></ScrollView><!--提醒:ScrollView只能有一个子类.-->
在activity中的代码
LinearLayout ll = (LinearLayout) findViewById(R.id.ll);public void selectStu(View v) { // 数据过多,会导致内存溢出 List<Student> list =sd.getStuAll(); ll.removeAllViews(); //remmoveAllViews(),会先清除之前的View for (Student student : list) { TextView tv = new TextView(this); tv.setText(student.toString()); ll.addView(tv); } }
上面的代码,就可以把我们数据库中的数据,列到页面了,
但是,如果数据量过大,就会导致,内存溢出.
因为的for循环的时候,每次都是需要new一个新的TextView,
和addView.这些都是需要内存空间的.
既然问题出现了,我们就需要使用ListView去解决这个问题了.
ListView的使用步骤
第一步:在布局页面使用ListView控件
第二步:写一个类继承baseAdapter适配器(adapter适配器有多个,在这里介绍baseAdapter)
第三步:在activity中,找到LisetView,并且给他设置适配器
代码演示:基本步骤
第一步:页面布局
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" > </ListView>
第二步:写一个类继承适配器(一般是继承baseAdapter)
private class MyBaseAdapter extends BaseAdapter { @Override public int getCount() { // 这里返回的值是 ,直接决定了 一会 listView中会有多少个条目 会显示 return null; } @Override public View getView(int position, View convertView, ViewGroup parent) { // getView 是 用来显示每个条目的,这个方法会在每个条目显示的时候得到执行 // position : 条目的索引,从0开始的 // convertView : 用来对listView优化的 // parent: 目前 用不到... } @Override public Object getItem(int position) { } @Override public long getItemId(int position) { }}//继承之后,有四个方法,需要实现. getItem,和getItemId.暂时使用不上,
第三步:给ListView添加适配器
public class ListViewActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListView lv = (ListView) findViewById(R.id.lv); lv.setAdapter(new MyAdapter()); }}
下面我来编写一个完整ListView的案例
第一步:页面布局
<ListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/lv" > </ListView>
第二步:写一个类继承适配器(一般是继承baseAdapter)
往往我们编写的adapter一般都是单独一个类的.所以数据,context都是需要从activity那边传递
过来的.
private class MyBaseAdapter extends BaseAdapter { public Context context; public List<Stu> Infos; //取巧一下,使用一个构造方法,接受adapter需要的数据 public MyBaseAdapter (Context context,List<stu> listStu){ this.context=context; this.Infos=listStu; } @Override public int getCount() { // 这里返回的值是 ,直接决定了 一会 listView中会有多少个条目 会显示 return stuInfos.size();//一般就是返回集合长度 } @Override public View getView(int position, View convertView, ViewGroup parent) { // getView 是 用来显示每个条目的,这个方法会在每个条目显示的时候得到执行 // position : 条目的索引,从0开始的 // convertView : 用来对listView优化的 // parent: 目前 用不到... //为了显示ListViwe的更加的好看,我们需要使用布局填充器. ViewHolder holder = null; if(convertView==null){ holder = new ViewHolder(); //可以自定义一下,ListView展示数据的样式,使用布局填充器. convertView=View.inflate(context, R.layout.item, null); holder.tvNumber=(TextView) convertView.findViewById(R.id.item_tvNumber); holder.tvName =(TextView)convertView.findViewById(R.id.item_tv_name); convertView.setTag(holder); }else{ holder= (ViewHolder) convertView.getTag(); } final BlackListInfo info=infos.get(position); holder.tvName.setText(info.name); holder.tvNumber.setText(info.number); return convertView; } class ViewHolder{ TextView tvNumber , tvName ; } @Override public Object getItem(int position) { } @Override public long getItemId(int position) { }}//继承之后,有四个方法,需要实现. getItem,和getItemId.暂时使用不上,
定义一个item.xml让ListView去使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" android:paddingBottom="10dp" android:paddingLeft="8dp" android:paddingRight="8dp" android:paddingTop="10dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="2dp" android:layout_marginLeft="10dp" android:layout_marginRight="2dp" android:orientation="vertical" > <TextView android:id="@+id/item_tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="姓名" android:textSize="18sp" /> <TextView android:id="@+id/item_tv_number" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="号码" android:textColor="#99000000" android:textSize="18sp" /> </LinearLayout> </RelativeLayout></RelativeLayout>
public class StuListActivity extends Activity { //查找控件 ListView mLvStu = (ListView) findViewById(R.id.stulist_lv); //准备数据 BlcakListDao dao = new BlcakListDao(BlackListActivity.this); }
0 0
- android_ListView的介绍_简单入门
- Android_ListView控件_使用注意事项
- android_ListView的操作
- Android_ListView的用法
- android_Listview
- Android_ListView
- Android_ListView
- Android_ListView
- 简单的Hibernate入门介绍
- 简单的Hibernate入门介绍
- greenDAo的简单入门介绍
- Hibernate的简单入门介绍
- 从头学android_ListView的使用
- Android_listview设置每条信息的间距
- android_ListView条目点击没有效果的解决方案
- Android_listview设置每条信息的间距
- JSON简单入门介绍
- Jquery入门 简单介绍
- Overflow:auto解决scoll 问题
- JAVA面试——基础知识
- scala入门笔记
- iOS开发中 修改状态栏颜色 或者隐藏状态栏颜色
- iOS开发系列- 视频MPMoviePlayerController
- android_ListView的介绍_简单入门
- Android开发优化之——对界面UI的优化(2)
- 几种算法的总结
- Android学习笔记-Xml文件解析之PULL解析实战
- 查询学生学科排名
- async 和 await 的异步处理
- Java反射机制详解
- ubuntu12.04安装tftp、配置tftp服务错误的解决方法
- iOS 懒加载