简单使用ListView


关键在于Adatper

Adatper用来连接UI与数据源。Adapter既负责提供数据,又负责创建Item视图。


一般步骤:

1.创建list_item.xml,用来创建ListView的Item的UI

2.自定义Adapter和数据源对象

3.在页面布局中定义ListView,在Activity中获取ListView引用

4.为ListView添加Adatper对象


Ex:

1.创建list_item.xml

<?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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
android:paddingLeft="50px"
/> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/age"
android:text="a"
android:paddingLeft="50px"
/> <TextView
android:id="@+id/id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="50px" /> </LinearLayout>

list_item.xml

2.自定义Adatper

public class StudentAdapter extends BaseAdapter
{
/**
* 数据源
*/
private List<Student> students; /**
* inflater引用 ,用来加载item.xml,获得view引用
*/
private LayoutInflater inflater; /**
* item.xml资源
*/
private int source; public StudentAdapter(Context context,List<Student> students , int source){
this.students = students;
this.source = source; //inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater = LayoutInflater.from(context);
} @Override
public int getCount() {
// TODO Auto-generated method stub
return students.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return students.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return arg0;
} /* (non-Javadoc)
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
* 创建Item视图,关联数据源
*/
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub TextView idView = null;
TextView nameView = null;
TextView ageView = null; if(arg1 == null)
{
arg1 = this.inflater.inflate(source, null); idView = (TextView)arg1.findViewById(R.id.id);
nameView =(TextView)arg1.findViewById(R.id.name);
ageView = (TextView)arg1.findViewById(R.id.age);
}
else
{
idView = (TextView)arg1.findViewById(R.id.id);
nameView =(TextView)arg1.findViewById(R.id.name);
ageView = (TextView)arg1.findViewById(R.id.age);
} Student stu = students.get(arg0); idView.setText(stu.getId().toString());
nameView.setText(stu.getName());
ageView.setText(stu.getAge().toString()); return arg1;
} }

Adatper

3.在Activity中为ListView添加Adatper

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.myListView);
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student("st",1,1));
StudentAdapter aa = new StudentAdapter(this,students,R.layout.list_item);
listView.setAdapter(aa);
}

Activity

[Android学习笔记]使用ListView的更多相关文章

  1. android学习笔记12——ListView、ListActivity

    ListView.ListActivity ==> ListView以垂直列表的形式显示所有列表项. 创建ListView的方式: 1.直接使用ListView创建 2.Activity继承Li ...

  2. Android学习笔记之ListView复用机制

    PS:满打满算,差不多三个月没写博客了...前一阵忙的不可开交...总算是可以抽出时间研究研究其他事情了... 学习内容: 1.ListView的复用机制 2.ViewHolder的概念 1.List ...

  3. Android学习笔记:ListView简单应用--显示文字列表

    在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例 ...

  4. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  5. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

  6. 【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件

    目录(?)[-] Chronometer计时器控件 倒计时CountDownTimer Switch控件 Space控件 其他控件 Android提供了很多控件,基本上都是view的扩展. Chron ...

  7. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  8. 【转】 Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner

    目录(?)[-] GridView Spinner GridView GridView是网格状布局,如图所示.在了解ListView后,很容易了解GridView.下面是例子的XML文件. <? ...

  9. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...

随机推荐

  1. 基于visual Studio2013解决C语言竞赛题之0610冒泡排序函数

      题目

  2. CString Format 乱码问题

    CString m_buf;CStatic *m_static;char *szName;...m_buf.Format(":%s",szName);m_static->Se ...

  3. 业余写的一个播放器SDK,求点意见

    好久没写博客了 现大致花了半年时间私下写一个音频SDK,想请csdn的达人提点意见,看看还需要增加哪些功能 我对这个的定位如下: 可以在游戏开发中播放音乐,作为一般的音频播放器后端,作为音频编辑器后端 ...

  4. 软件project师的属性与发展

    工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...

  5. Swift - 使用闭包筛选过滤数据元素

    通常筛选一个数组,通常会在代码的其它地方创建一个函数,然后为数组的每个元素调用它.但这样做会使代码分散在许多地方,不便于阅读.使用闭包就可以将相关代码片断放在一起,使结构逻辑更加清晰. 比如,筛选一个 ...

  6. NYOJ10,skiing

    skiing 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描写叙述 Michael喜欢滑雪百这并不奇怪, 由于滑雪的确非常刺激.但是为了获得速度,滑的区域必须向下倾斜,并且 ...

  7. C语言,C++,static

    术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量.随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数.为了避 ...

  8. CSS——float属性备忘笔记

    通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间.CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了 ...

  9. EasyUI - SplitButton 分割按钮

    效果: html代码: <!--使用标签创建,直接使用即可,不必使用js代码--> <%--<a href="javascript:void(0)" id= ...

  10. actor简介

    今天抽时间,给team做了一次actor介绍,现附上ppt actor 简介及应用