07_ListView
ListView是用来显示一个列表的控件,它在Android源代码中是继承AbsListView类的,AbsListView类是继承于AdapterView类的,而AdapterView类是继承ViewGroup类的。
下面程序的功能:创建ListView,点击Item会显示全部信息。

1 package com.example.listviewdemo;
2
3 import android.support.v7.app.ActionBarActivity;
4 import android.os.Bundle;
5 import android.view.View;
6 import android.widget.AdapterView;
7 import android.widget.AdapterView.OnItemClickListener;
8 import android.widget.ArrayAdapter;
9 import android.widget.ListView;
10 import android.widget.Toast;
11
12 public class MainActivity extends ActionBarActivity implements OnItemClickListener {
13
14 private ListView lv;
15 private ArrayAdapter<ListCellData> adapter;
16
17 @Override
18 protected void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.activity_main);
21
22 adapter = new ArrayAdapter<ListCellData>(this, android.R.layout.simple_expandable_list_item_1);
23 // adapter = new ArrayAdapter<String>(this, R.layout.lsit_cell);
24
25 lv = (ListView) findViewById(R.id.listView1);
26 lv.setAdapter(adapter);
27
28 adapter.add(new ListCellData("张三", "男", 45));
29 adapter.add(new ListCellData("李四", "男", 22));
30 adapter.add(new ListCellData("王五", "女", 33));
31
32 lv.setOnItemClickListener(this);
33
34 // adapter.add("Hello");
35 // adapter.add("What?");
36 }
37
38 @Override
39 public void onItemClick(AdapterView<?> parent, View view, int position,
40 long id) {
41 ListCellData data = adapter.getItem(position);
42
43 Toast.makeText(this, String.format("名字: %s, 性别: %s, 年龄: %d", data.getUserName(), data.getSex(), data.getAge()), Toast.LENGTH_SHORT).show();
44
45
46 }
47
48 }
MainActivity
带image的ListView:

1 package com.example.listviewdemo;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.widget.ListView;
6
7 public class CustomListView extends Activity{
8
9 private ListView lv;
10
11 @Override
12 protected void onCreate(Bundle savedInstanceState) {
13 // TODO Auto-generated method stub
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.custom_listview);
16
17 lv = (ListView) findViewById(R.id.lv);
18 lv.setAdapter(new CustomListViewAdapter(this));
19 }
20
21 }
CustomListView
1 package com.example.listviewdemo;
2
3 import android.content.Context;
4 import android.view.LayoutInflater;
5 import android.view.View;
6 import android.view.ViewGroup;
7 import android.widget.BaseAdapter;
8 import android.widget.ImageView;
9 import android.widget.LinearLayout;
10 import android.widget.TextView;
11
12 public class CustomListViewAdapter extends BaseAdapter {
13
14 private Context context = null;
15
16 CustomListViewAdapter(Context context){
17 this.context = context;
18 }
19
20 public Context getContext() {
21 return context;
22 }
23
24 private CustomListCellData[] data = new CustomListCellData[]{
25 new CustomListCellData("imag1", "dec 1", R.drawable.a),
26 new CustomListCellData("imag2", "dec 2", R.drawable.b),
27 new CustomListCellData("imag3", "dec 3", R.drawable.c)
28 };
29
30 @Override
31 public View getView(int position, View convertView, ViewGroup parent) {
32
33 // TextView tv = null;
34 //
35 // //这样做的好处:防止重复创建TextView
36 // //在有view被回收后,convertView就不是null
37 // if (convertView != null) {
38 // tv = (TextView) convertView;
39 // }else {
40 // tv = new TextView(CustomListView.this);
41 // }
42 //
43 // tv.setTextSize(30);
44 // tv.setText(getItem(position));
45 //
46 // return tv;
47
48 LinearLayout ll = null;
49 if (convertView != null) {
50 ll = (LinearLayout) convertView;
51 }else {
52 ll = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.custom_listv_cell, null);
53 }
54
55 CustomListCellData data = getItem(position);
56
57 ImageView icon = (ImageView) ll.findViewById(R.id.icon);
58 TextView name = (TextView) ll.findViewById(R.id.name);
59 TextView dec = (TextView) ll.findViewById(R.id.dec);
60
61 icon.setImageResource(data.iconId);
62 name.setText(data.name);
63 dec.setText(data.dec);
64
65 return ll;
66 }
67
68 @Override
69 public long getItemId(int position) {
70 return position;
71 }
72
73 @Override
74 public CustomListCellData getItem(int position) {
75 return data[position];
76 }
77
78 @Override
79 public int getCount() {
80 return data.length;
81 }
82
83 }
CustomListViewAdapter
1 package com.example.listviewdemo;
2
3 public class CustomListCellData {
4
5 public CustomListCellData(String name, String dec, int iconId) {
6 this.name = name;
7 this.dec = dec;
8 this.iconId = iconId;
9 }
10
11 public String name = "";
12 public String dec = "";
13 public int iconId = 0;
14 }
CustomListCellData
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:orientation="horizontal" >
6
7 <ImageView
8 android:layout_width="100dp"
9 android:layout_height="100dp"
10 android:id="@+id/icon"/>
11
12 <LinearLayout
13 android:layout_weight="1"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:orientation="vertical">
17
18 <TextView
19 android:id="@+id/name"
20 android:layout_width="wrap_content"
21 android:layout_height="wrap_content"
22 android:text="Large Text"
23 android:textAppearance="?android:attr/textAppearanceLarge" />
24
25 <TextView
26 android:id="@+id/dec"
27 android:layout_width="wrap_content"
28 android:layout_height="wrap_content"
29 android:text="TextView" />
30
31 </LinearLayout>
32
33 </LinearLayout>
AndroidManifest.xml
07_ListView的更多相关文章
随机推荐
- OpenCascade拓扑对象之:拓扑对象方向继承关系
@font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...
- 使用scrapy框架模拟登录
scrapy模拟登录 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 COOKIES_ENABLED = True 或# CO ...
- UVA12558 埃及分数 Egyptian Fractions
题意描述 题目描述的翻译挺清楚的了. 和原题的区别是多了禁用的分母.(还有毒瘤输入输出) 算法分析 显然这道题没有什么很好的数学方法来解决,所以可以使用搜索. 由于不确定深度,深搜显然无穷无尽. 所以 ...
- Python之list函数
- MySQL全面瓦解6:查询的基本操作
概述 提到查询,就回到我们第四篇的SQL语言分类了,DQL(Data QueryLanguage),也就是数据查询语言,实际就是从数据库中获取数据的一种命令方式.我们给数据库发送一个查询语句的命令,数 ...
- 【kotlin】adapterPosition方法返回-1 无法获取位置
在学习使用RecyclerView时 对Adapter的几个主要方法进行重写 通过使用书中的例子 在onCreateViewHolder中使用 viewHolder.itemView.setOnCli ...
- learning to Estimate 3D Hand Pose from Single RGB Images论文理解
持续更新...... 概括:以往很多论文借助深度信息将2D上升到3D,这篇论文则是想要用网络训练代替深度数据(设备成本比较高),提高他的泛性,诠释了只要合成数据集足够大和网络足够强,我就可以不用深度信 ...
- 直播平台源码搭建教程:微信小程序中的直播如何去掉水印
直播平台源码搭建教程:微信小程序中的直播如何去掉水印 本文与大家分享一下直播平台源码搭建教程,如何去掉直播视频的水印 var services = require('../../lib/service ...
- 云计算之路-出海记:命令行下的 AWS
俗话说"三百六十行,行行出状元",自从有了电脑之后,三百六十行又多了一行 -- 命令行.GUI 的诞生开创了繁荣的 PC "窗口"(windows)时代,互联网 ...
- C\C++语言重点——指针篇 | 为什么指针被誉为 C 语言灵魂?(一文让你完全搞懂指针)
本篇文章来自小北学长的公众号,仅做学习使用,部分内容做了适当理解性修改和添加了博主的个人经历. 注:这篇文章好好看完一定会让你掌握好指针的本质! 看到标题有没有想到什么? 是的,这一篇的文章主题是「指 ...