本例的数据是拿前面的SQLite中的person表的数据作展示,Peron表中有序号、姓名、电话
要列数据出来,需要有表头,需要设置ListView中的布局,因此,步骤如下
步骤一:配置strings.xml,以显示表头内容
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">SQLite操作</string>
<string name="action_settings">Settings</string>
<string name="xinmin">姓名</string>
<string name="xuhao">序号</string>
<string name="phone">手机号</string>
</resources>
步骤二:配置Activity.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.sqliteoper.MainActivity" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:textSize="22sp"
android:text="@string/xuhao"
/>
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:textSize="22sp"
android:text="@string/xinmin"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:text="@string/phone"
/>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/listview"
/>
</LinearLayout>
步骤三:配置item.xml,即ListView的子元素布局
<?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="horizontal" >
<TextView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:id="@+id/xuhao"
/>
<TextView
android:layout_width="130dp"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:id="@+id/xinmin"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#000"
android:id="@+id/phone"
/>
</LinearLayout>
步骤四:编写Activity.java的后台代码
package com.example.sqliteoper;
import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import java.util.*;
import android.content.*;
import android.database.Cursor;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;
import com.example.sqliteoper.Model.*;
import com.example.sqliteoper.Service.*;
import com.example.sqliteoper.adapter.PersonAdapter;
public class MainActivity extends Activity {
private ListView lvListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到listview
lvListView=(ListView)this.findViewById(R.id.listview);
/*
//绑定数据并显示
showListView();
*/
/*
//用游标的方式绑定
showListViewWithCursor();
*/
//用自定义的适配器来实现
showListViewWithCustomAdapter();
lvListView.setOnItemClickListener(new OnItemClick());
}
private final class OnItemClick implements OnItemClickListener{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView lv=(ListView)parent;
Person p=(Person)lv.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), p.getPersonId()+"", Toast.LENGTH_SHORT).show();
}
}
/*
* 绑定数据到ListView上并显示,用SimpleAdapter的方法
*/
private void showListView() {
List<Person> list=new PersonService(getApplicationContext()).GetPersonList("", "order by PersonId asc", 1, 20);
if(list==null || list.size()==0)return;
List<HashMap<String,Object>> maplist=new ArrayList<HashMap<String,Object>>();
for(Person p:list){
HashMap<String,Object> hm=new HashMap<String,Object>();
hm.put("xuhao", p.getPersonId());
hm.put("xinmin", p.getPersonName());
hm.put("phone", p.getPersonPhone());
maplist.add(hm);
}
SimpleAdapter adapter=new SimpleAdapter(getApplicationContext(), maplist, R.layout.item, new String[]{"xuhao","xinmin","phone"}, new int[]{R.id.xuhao,R.id.xinmin,R.id.phone});
lvListView.setAdapter(adapter);
}
/*
* 用cursor作数据源来绑定listview
*/
@SuppressWarnings("deprecation")
private void showListViewWithCursor(){
Cursor cursor=new PersonService(getApplicationContext()).GetPersonCursorList("", "", 2, 25);
SimpleCursorAdapter adapter=new SimpleCursorAdapter(this, R.layout.item, cursor, new String[]{"_id","PersonName","PersonPhone"}, new int[]{R.id.xuhao,R.id.xinmin,R.id.phone});
lvListView.setAdapter(adapter);
}
/*
* 用自定义的方式来完成
*/
private void showListViewWithCustomAdapter()
{
List<Person> list=new PersonService(getApplicationContext()).GetPersonList("", "order by PersonId asc", 1, 20);
PersonAdapter adapter=new PersonAdapter(this, list, R.layout.item);
lvListView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
步骤五:上面的showListViewWithCustomAdapter的类的代码
package com.example.sqliteoper.adapter;
import java.util.List;
import com.example.sqliteoper.R;
import com.example.sqliteoper.Model.Person;
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 PersonAdapter extends BaseAdapter {
private List<Person> persons;//要绑定的数据
private int resource;//要绑定到的界面
private Context context;
private LayoutInflater inflater;
public PersonAdapter(Context context,List<Person> persons,int resource) {
this.persons = persons;
this.resource=resource;
this.context=context;
inflater=(LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return persons.size();
}
@Override
public Object getItem(int position) {
return persons.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
convertView=inflater.inflate(resource, null);
}
TextView xuhaoView=(TextView)convertView.findViewById(R.id.xuhao);
TextView xinminView=(TextView)convertView.findViewById(R.id.xinmin);
TextView phoneView=(TextView)convertView.findViewById(R.id.phone);
Person p=persons.get(position);
if(p!=null){
xuhaoView.setText(p.getPersonId()+"");
xinminView.setText(p.getPersonName());
phoneView.setText(p.getPersonPhone());
}
return convertView;
}
}