使用ListView实现一个简单的学生信息展示效果
2016-04-13 09:11
453 查看
这篇博客将介绍一下下图中的效果的实现方式
实现方式,使用Android Studio创建一个Android工程
1、修改activity_layout.xml中的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.fyt.listviewdemo.MainActivity">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
2、新建一个item_listview.xml文件,用于实现ListView中每个条目的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:textSize="25sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<TextView
android:id="@+id/tv_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄" />
</LinearLayout>
</RelativeLayout>
3、修改MainActivity.java中的代码(核心代码)
代码中的
//把布局文件填充成一个View对象
v = View.inflate(MainActivity.this, R.layout.item_listview, null);可以改成下面的两种方式
方式1
//获取布局填充器对象
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
//使用布局填充器填充布局文件
v = inflater.inflate(R.layout.item_listview, null);
方式2
//通过系统服务获得布局填充器对象
LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
//使用布局填充器将布局文件填充成一个View对象
v = inflater2.inflate(R.layout.item_listview, null);
实现方式,使用Android Studio创建一个Android工程
1、修改activity_layout.xml中的代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.fyt.listviewdemo.MainActivity">
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>
2、新建一个item_listview.xml文件,用于实现ListView中每个条目的布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:textSize="25sp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical">
<TextView
android:id="@+id/tv_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号" />
<TextView
android:id="@+id/tv_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄" />
</LinearLayout>
</RelativeLayout>
3、修改MainActivity.java中的代码(核心代码)
package com.fyt.listviewdemo; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends Activity { private MyOpenHelper oh; private SQLiteDatabase db; private List<Student> studentList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载布局文件 setContentView(R.layout.activity_main); //创建集合,保存学生的信息 studentList = new ArrayList<Student>(); //创建数据库 createDatabase(); //从数据库中读取数据 readDataFromDatabase(); //使用ListView显示学生的信息 showStudentData(); } //创建数据库 public void createDatabase() { //创建帮助器对象 oh = new MyOpenHelper(this, "people.db", null, 1); //创建数据库对象 db = oh.getWritableDatabase(); } //从数据库中读取数据 public void readDataFromDatabase() { Cursor cursor = db.query("student", null, null, null, null, null, null, null); while(cursor.moveToNext()) { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); int no = cursor.getInt(cursor.getColumnIndex("no")); float cpp = cursor.getFloat(cursor.getColumnIndex("cpp")); float math = cursor.getFloat(cursor.getColumnIndex("math")); float english = cursor.getFloat(cursor.getColumnIndex("english")); Log.d("MainActivity", name + ", " + age + ", " + no + ", " + cpp + ", " + math + ", " + english); //将学生的信息添加到集合中 Student student = new Student(name, age, no, cpp, math, english); studentList.add(student); } } //使用ListView显示学生的信息 public void showStudentData() { //获得布局文件上的ListView控件 ListView listView = (ListView)findViewById(R.id.lv); //给ListView设置一个适配器 listView.setAdapter(new MyAdapter()); } //创建一个继承自BaseAdapter的内部类 public class MyAdapter extends BaseAdapter { //由系统调用,用于设置ListView中条目的个数 @Override public int getCount() { return studentList.size(); } //由系统调用,获取一个View对象,作为ListView的条目 //position:本次getView方法调用所返回的View对象,在listView中是处于第几个条目,那么position的值就是多少 @Override public View getView(int position, View convertView, ViewGroup parent) { //从集合中获得学生的信息 Student student = studentList.get(position); View v = null; //如果ListView中的条目没有缓存 if(convertView == null) { //把布局文件填充成一个View对象 v = View.inflate(MainActivity.this, R.layout.item_listview, null); } //ListView中的条目有缓存 else { v = convertView; } //设置学生的姓名 TextView tv_name = (TextView) v.findViewById(R.id.tv_name); tv_name.setText(student.getName()); //设置学生的学号 TextView tv_no = (TextView) v.findViewById(R.id.tv_no); tv_no.setText(student.getNo() + ""); //设置学生的年龄 TextView tv_age = (TextView) v.findViewById(R.id.tv_age); tv_age.setText(student.getAge() + ""); return v; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } } }
代码中的
//把布局文件填充成一个View对象
v = View.inflate(MainActivity.this, R.layout.item_listview, null);可以改成下面的两种方式
方式1
//获取布局填充器对象
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
//使用布局填充器填充布局文件
v = inflater.inflate(R.layout.item_listview, null);
方式2
//通过系统服务获得布局填充器对象
LayoutInflater inflater2 = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
//使用布局填充器将布局文件填充成一个View对象
v = inflater2.inflate(R.layout.item_listview, null);
相关文章推荐
- 沿海信标台站的坐标系统的问题
- 字符与编码
- Hibernate单向多对一关联
- android canvas.drawText()的研究
- 【SDCC讲师专访】首席架构师徐海峰眼中的架构和出色的架构师
- Opencv学习笔记(六)SURF学习笔记
- 最全的常用正则表达式大全
- iOS开发之 动画CoreAnimation
- 10款WordPress的插件让你的网站的移动体验
- Linux安装mysql5.5(ubuntu14.04)
- Error 1275 - 此驱动程序被阻止加载
- bzoj 2964: Boss单挑战 动态规划
- 剑指offer 36 两个链表的第一个公共结点
- 计篇(二)
- 如何配置Apache服务器中的虚拟机
- oracle 和 mysql 连接字符串
- 某些mysql like查询也是可以使用到索引的
- python.format() 格式化字符串
- 什么是CSR ? 什么是公钥和私钥?
- 剑指offer系列之53:字符流中第一个不重复的字符