Android ListView简单实用

layout创建:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context="com.example.person.MainActivity"
    >

    <LinearLayout
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:orientation="horizontal" >
	    <TextView
	        android:layout_width="100dp"
	   		android:layout_height="wrap_content"
	   		android:text="@string/name"
	    />

	    <TextView
	        android:layout_width="100dp"
	   		android:layout_height="wrap_content"
	   		android:text="@string/sex"
	    />

	    <TextView
	        android:layout_width="100dp"
	   		android:layout_height="wrap_content"
	   		android:text="@string/age"
	    />
	</LinearLayout>

    <ListView  android:layout_width="fill_parent"
    	android:layout_height="fill_parent"
    	android:id="@+id/listView"
    	/>

</LinearLayout>

item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="100dp"
   		android:layout_height="wrap_content"
   		android:id="@+id/name"
    />

    <TextView
        android:layout_width="100dp"
   		android:layout_height="wrap_content"
   		android:id="@+id/sex"
    />

    <TextView
        android:layout_width="100dp"
   		android:layout_height="wrap_content"
   		android:id="@+id/age"
    />

</LinearLayout>

  

UserDao  插入数据, 分页查询数据

/**
 *
 */
package com.example.person.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.nfc.Tag;
import android.os.Build.VERSION;
import android.util.Log;

/**
 *
 * @author baoxing.gbx
 * @version $Id: DBopenHelper.java, v 0.1 2015年7月11日 下午9:39:03 baoxing.gbx Exp $
 */
public class DBopenHelper extends SQLiteOpenHelper{

    /** 数据库名称  */
    private static final String DB_NAME = "test.db";

    private static final int  VERSION = 1;

    private static final String Tag = "DBopenHelper";

    // 初始化数据库开启装置
    public DBopenHelper(Context context) {
        super(context, DB_NAME, null, VERSION);
        // TODO Auto-generated constructor stub
    }

    //
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.i(Tag, "onCreate 被调用");
        db.execSQL("create table user (id integer primary key autoincrement, name varchar(20),sex varchar(20), age integer )");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.i(Tag, "onUpgrade 被调用");
        db.execSQL("DROP TABLE IF EXISTS person");
        onCreate(db);
    }

}

/**
 *
 */
package com.example.person.dao;

import java.util.ArrayList;
import java.util.List;
import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.database.Cursor;
import com.example.person.vo.User;

/**
 *
 * @author baoxing.gbx
 * @version $Id: UserDao.java, v 0.1 2015年7月11日 下午10:44:09 baoxing.gbx Exp $
 */
public class UserDao {
    String tableName = "user";
    DBopenHelper dbopenHelper;

    public UserDao (DBopenHelper dBopenHelper) {
        this.dbopenHelper = dBopenHelper;
    }

    public long save(User user) {
        ContentValues values = new ContentValues();
        values.put("name", user.getName());
        values.put("sex", user.getSex());
        values.put("age", user.getAge());
        long result = dbopenHelper.getWritableDatabase().insert(tableName, null, values);
        return result;
    }

    public List<User> queryPage(int startRow, int pageSize) {
        String limit = startRow + "," + pageSize;
        Cursor cursor = dbopenHelper.getReadableDatabase().query(tableName, null, null, null, null, null, null, limit);
        List<User> users = new ArrayList<User>();
        while (cursor.moveToNext()) {
            User user = new User();
            user.setId(cursor.getInt(cursor.getColumnIndex("id")));
            user.setName(cursor.getString(cursor.getColumnIndex("name")));
            user.setSex(cursor.getString(cursor.getColumnIndex("sex")));
            user.setAge( cursor.getInt(cursor.getColumnIndex("age")));
            users.add(user);
        }
        return users;
    }

}

  

MainActivity显示数据

package com.example.person;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;

import com.example.person.dao.DBopenHelper;
import com.example.person.dao.UserDao;
import com.example.person.vo.User;

public class MainActivity extends ActionBarActivity {

    private ListView listView;

    private UserDao userDao ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listView = (ListView)findViewById(R.id.listView);
        userDao = new UserDao(new DBopenHelper(this));

        // 简单适配器
//        show1();

        // 简单适配器
        show2();

    }

    /**
     * 自定义是配置显示
     */
    private void show2() {
        List<User> users = userDao.queryPage(0, 20);

        listView.setAdapter(new MyAdapter(this, users, R.layout.item));
    }

    /**
     * 普通是配置适配ListView
     */
    private void show1() {
        List<User> users = userDao.queryPage(0, 20);
        List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
        for (User user : users) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("name", user.getName());
            map.put("sex", user.getSex());
            map.put("age", user.getAge());
            data.add(map);
        }
        SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
            new String[] {"name", "sex", "age"}, new int[] {R.id.name, R.id.sex, R.id.age});

        listView.setAdapter(adapter);
    }
}

  

自定义适配器

package com.example.person;

import java.util.List;

import com.example.person.vo.User;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter{

    private List<User> users;
    private int  resource;

    private LayoutInflater inflater; 

    public MyAdapter(Context context,List<User> users, int resource) {
        super();
        this.users = users;
        this.resource = resource;
        this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    public MyAdapter() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    public int getCount() {
        return users.size();
    }

    @Override
    public Object getItem(int position) {
        return users.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (null == convertView) {
            convertView = inflater.inflate(resource, null);
        }
       ( (TextView)convertView.findViewById(R.id.name)).setText(users.get(position).getName());
       ( (TextView)convertView.findViewById(R.id.sex)).setText(users.get(position).getSex());
       ( (TextView)convertView.findViewById(R.id.age)).setText(users.get(position).getAge()+"");
        return convertView;
    }

}

  

时间: 2024-08-03 14:06:54

Android ListView简单实用的相关文章

Android基础入门教程——2.4.2 ListView简单实用

Android基础入门教程--2.4.2 ListView简单实用 标签(空格分隔): Android基础入门教程 本节引言: 一口气把Android入门网络编程的章节写完了,本节我们来继续学习没有讲完的UI控件部分, 回顾上一节,我们介绍了Adapter适配器的概念,然后学习了三个最简单的适配器的使用: ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,而本节给大家讲解的是第一个 需搭配Adapter使用的UI控件:ListView,不过在版本中被R

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

在activity中的编写如下代码: final List<String> items = new ArrayList<String>(); //设置要显示的数据,这里因为是例子,所以固定写死 items.add("item1"); items.add("item2"); items.add("item3"); ListView listView = (ListView) findViewById(R.id.listVie

ListView简单实用

本节引言: 本节我们来继续学习没有讲完的UI控件部分, 回顾上一节,我们介绍了Adapter适配器的概念,然后学习了三个最简单的适配器的使用: ArrayAdapter,SimpleAdapter和SimpleCursorAdapter,而本节给大家讲解的是第一个 需搭配Adapter使用的UI控件:ListView,不过在版本中被RecyclerView这个新控件替换掉了! 列表作为最常用的控件之一,还是有必要好好学习的,本节以一个初学者的角度来学习 ListView,ListView的属性,

android ListView简单用法

ListView是比较常用的控件之一,在这里总结一下,方便查阅. 程序效果是实现一个ListView,ListView里面有标题.内容和图片,并加入单击和长按响应. 步骤: 1.首先在activity_main.xml中定义一个ListView. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ap

Android FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇

效果图镇楼   FlycoDialog是一款非常棒的弹窗对话框处理框架,今天在这里主要讲一下他的自定义弹出对话框的功能,这里以第二幅效果图为例,图片已经放在博客最下方,X号自己随便找一个东西代替吧. 首先我们还是先添加依赖. compile 'com.flyco.dialog:FlycoDialog_Lib:[email protected]' 然后我们先写一个弹窗的布局,非常简单一个大的ImageView展示图片,上面放一个小的ImageView用于点击使弹框消失. <?xml version

【Android进阶】Junit单元测试环境搭建以及简单实用

单元测试的目的 首先,Junit单元测试要实现的功能,就是用来测试写好的方法是否能够正确的执行,一般多用于对业务方法的测试. 单元测试的环境配置 1.在AndroidManifest清单文件的Application节点下,引入单元测试使用的库 2.在AndroidManifest清单文件与Application节点平行的节点中,添加instrumentation节点 下面是一个完整的配置的代码 <manifest xmlns:android="http://schemas.android.

Android反编译工具介绍与简单实用方法

Android反编译工具介绍与简单实用方法 Android反编译的目的无非就是为了看到APK的xml.资源和代码: 得到代码的方式:直接解压APK文件 --> 得到classes.dex文件 --> 使用 dex2jar classes.dex classes.jar生成jar文件 --> [可选的解压jar文件] -->使用XJad或者JDCompiler查看源代码 得到XML的方式: 方式1:直接解压APK文件 --> 通过axmlprinter工具查看XML文件(这种方

Android ListView列表控件的简单使用

ListView 列表是我们经常会使用的控件, 如果想要自定义里面的显示的话是挺麻烦的, 需要新建XML.Class SimpleAdapter这两个文件, 较为麻烦. 如果我们只是想显示两.三行文字在上面, 却又不想那么麻烦呢? 那我们只要新建一个XML就够了.  这里以显示一个ListView项里三个TextView为例.  首先我们要创建一个XML文件, 这个XML文件是用来作为单个ListView项布局用的.  list_row.xml[java]<?xml version="1.

开发一个简单实用的android紧急求助软件

之前女朋友一个人住,不怎么放心,想找一个紧急求助的软件,万一有什么突发情况,可以立即知道.用金山手机卫士的手机定位功能可以知道对方的位置状态,但不能主动发送求助信息,在网上了很多的APK,都是鸡肋功能,都需要解锁.并打开软件,真正的紧急情况可能没有时间来完成这一系列操作. 于是我自己做了一个这样的软件,在紧急情况下,连续按电源键5次即可发送求救短信和位置信息给事先指定的用户,这个操作在裤兜里就能完成.原理很简单,就是设置监听器捕获屏幕的开关,在较短的时间内屏幕开关达到一定次数后,触发手机定位,定