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的更多相关文章
随机推荐
- Java导出Pdf格式表单
前言 作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求 需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 ...
- 神州笔记本电脑【K670D】安装 Ubuntu18.04 系列操作
一.使用U盘安装 Ubuntu 前的处理如下: 进入BIOS将SSD设为启动首选项 -> F10保存退出 -> 用方向键高亮ubuntu启动项 -> 按e键进入编辑状态 -> ...
- 什么是 RedLock
Redis 官方站这篇文章提出了一种权威的基于 Redis 实现分布式锁的方式名叫 Redlock,此种方式比原先的单节点的方法更安全.它可以保证以下特性: 安全特性:互斥访问,即永远只有一个 cli ...
- SQL 速查表
关系数据库,基于关系模型,使用关系(表)存储数据,同时定义了完整性约束.常见的关系数据库系统包括:Oracle.MySQL/MariaDB.SQL Server.PostgreSQL 等等. SQL, ...
- 简单操作elasticsearch(es版本7.6)
简单操作elasticsearch(es版本7.6) es 官方文档 https://www.elastic.co/guide/index.html 简单操作elasticsearch主要是指管理索引 ...
- Java_进程与线程
进Process&Thread 区别 进程 线程 根本区别 作为资源分配的单位 调度和执行的单位 开销 每个进程都有独立的代码和数据空间(进程上下文), 进程间的切换会有较大的开销 线程可以看 ...
- 13 SOAP
13 SOAP SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service) ...
- 基于gin的golang web开发:使用数据库事务
在前文介绍访问数据库时介绍了github.com/jmoiron/sqlx包,本文基于这个包使用数据库事务. defer 在使用数据库事务之前,首先需要了解go语言的defer关键字.defer是go ...
- iframe框架下的某一页面跳转到另外一个页面
//iframe只在当前页跳转 window.location = "/Admin/Blog/Index"; 只在当前页跳转 而不是整个页面都跳转
- mysql实现当前行的值累加上一行的值
数据库钱包表有日期.收入.支出三个字段.用mysql语句计算每日余额,得如下结果 select m.*, @total :=@total + 收入 - 支出 as 钱包余额 ( select * fr ...