注意:在用SimpleCursorAdapter@H_301_2@适配器时,如果查询语句为@H_301_2@select*fromstudentwhereid@H_301_2@=?时,而且数据库没有@H_301_2@_id@H_301_2@字段的话,运行后会报如下的错误@H_301_2@@H_301_2@
因为Cursor@H_301_2@游标查询规定了数据库的@H_301_2@id@H_301_2@为@H_301_2@_id@H_301_2@。@H_301_2@@H_301_2@
解决办法:为数据库添加_id@H_301_2@字段或者改查询@H_301_2@sql@H_301_2@@H_301_2@
改为:selectidas_id,name,phonefromstudentwhereid=?@H_301_2@@H_301_2@
@H_301_2@
@H_301_2@
在layout@H_301_2@文件夹下建@H_301_2@items.xml@H_301_2@
Items.xml
<@H_301_2@LinearLayout@H_301_2@xmlns:android@H_301_2@=@H_301_2@"http://schemas.android.com/apk/res/android"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:orientation@H_301_2@=@H_301_2@"horizontal"@H_301_2@
>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/name"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"120dp"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"24px"@H_301_2@
android:layout_marginLeft@H_301_2@=@H_301_2@"15px"@H_301_2@
/>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/phone"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"220dp"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"24px"@H_301_2@
/>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/account"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"24px"@H_301_2@
/>@H_301_2@
</@H_301_2@LinearLayout@H_301_2@>@H_301_2@
@H_301_2@
@H_301_2@
@H_301_2@
Activity_main.xml@H_301_2@
@H_301_2@
<@H_301_2@LinearLayout@H_301_2@xmlns:android@H_301_2@=@H_301_2@"http://schemas.android.com/apk/res/android"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:orientation@H_301_2@=@H_301_2@"vertical"@H_301_2@
android:gravity@H_301_2@=@H_301_2@"center"@H_301_2@
>@H_301_2@
@H_301_2@<@H_301_2@LinearLayout@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:orientation@H_301_2@=@H_301_2@"horizontal"@H_301_2@
>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/name"@H_301_2@
@H_301_2@android:layout_width@H_301_2@=@H_301_2@"120dp"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:text@H_301_2@=@H_301_2@"@string/name"@H_301_2@
android:layout_marginLeft@H_301_2@=@H_301_2@"15px"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"28px"@H_301_2@
/>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/phone"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"220dp"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:text@H_301_2@=@H_301_2@"@string/phone"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"28px"@H_301_2@
/>@H_301_2@
@H_301_2@<@H_301_2@TextView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/account"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"wrap_content"@H_301_2@
android:text@H_301_2@=@H_301_2@"@string/account"@H_301_2@
android:textSize@H_301_2@=@H_301_2@"28px"@H_301_2@
/>@H_301_2@
@H_301_2@</@H_301_2@LinearLayout@H_301_2@>@H_301_2@
@H_301_2@<@H_301_2@ListView@H_301_2@
android:id@H_301_2@=@H_301_2@"@+id/listView"@H_301_2@
android:layout_width@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
android:layout_height@H_301_2@=@H_301_2@"fill_parent"@H_301_2@
/>@H_301_2@
</@H_301_2@LinearLayout@H_301_2@>@H_301_2@
@H_301_2@
2.@H_301_2@创建实体类(javabean@H_301_2@)@H_301_2@@H_301_2@
Student.java@H_301_2@
@H_301_2@package@H_301_2@com.example.entity;@H_301_2@
public@H_301_2@@H_301_2@class@H_301_2@Student{@H_301_2@
private@H_301_2@Integer@H_301_2@id@H_301_2@;@H_301_2@
private@H_301_2@String@H_301_2@name@H_301_2@;@H_301_2@
private@H_301_2@String@H_301_2@phone@H_301_2@;@H_301_2@
private@H_301_2@Double@H_301_2@account@H_301_2@;@H_301_2@
public@H_301_2@Student(Integerid,Stringname,Stringphone,Doubleaccount){@H_301_2@
this@H_301_2@.@H_301_2@id@H_301_2@=id;@H_301_2@
this@H_301_2@.@H_301_2@name@H_301_2@=name;@H_301_2@
this@H_301_2@.@H_301_2@phone@H_301_2@=phone;@H_301_2@
this@H_301_2@.@H_301_2@account@H_301_2@=account;@H_301_2@
}@H_301_2@
public@H_301_2@IntegergetId(){@H_301_2@
return@H_301_2@@H_301_2@id@H_301_2@;@H_301_2@
}@H_301_2@
public@H_301_2@@H_301_2@void@H_301_2@setId(Integerid){@H_301_2@
this@H_301_2@.@H_301_2@id@H_301_2@=id;@H_301_2@
}@H_301_2@
public@H_301_2@StringgetName(){@H_301_2@
return@H_301_2@@H_301_2@name@H_301_2@;@H_301_2@
}@H_301_2@
public@H_301_2@@H_301_2@void@H_301_2@setName(Stringname){@H_301_2@
this@H_301_2@.@H_301_2@name@H_301_2@=name;@H_301_2@
}@H_301_2@
public@H_301_2@StringgetPhone(){@H_301_2@
return@H_301_2@@H_301_2@phone@H_301_2@;@H_301_2@
}@H_301_2@
public@H_301_2@@H_301_2@void@H_301_2@setPhone(Stringphone){@H_301_2@
this@H_301_2@.@H_301_2@phone@H_301_2@=phone;@H_301_2@
}@H_301_2@
public@H_301_2@DoublegetAccount(){@H_301_2@
return@H_301_2@@H_301_2@account@H_301_2@;@H_301_2@
}@H_301_2@
public@H_301_2@@H_301_2@void@H_301_2@setAccount(Doubleaccount){@H_301_2@
this@H_301_2@.@H_301_2@account@H_301_2@=account;@H_301_2@
}@H_301_2@
public@H_301_2@StringtoString(){@H_301_2@
return@H_301_2@@H_301_2@this@H_301_2@.getId()+@H_301_2@","@H_301_2@+@H_301_2@this@H_301_2@.getName()+@H_301_2@","@H_301_2@+@H_301_2@this@H_301_2@.getPhone()+@H_301_2@","@H_301_2@+@H_301_2@this@H_301_2@.getAccount();@H_301_2@
}@H_301_2@
}@H_301_2@
@H_301_2@
@H_301_2@
3.@H_301_2@创建@H_301_2@DBOpenHelper@H_301_2@类@H_301_2@@H_301_2@extends@H_301_2@sqliteOpenHelper@H_301_2@创建数据库@H_301_2@
@H_301_2@
packagecom.example.sqlite;@H_301_2@
importandroid.content.Context;@H_301_2@
importandroid.database.sqlite.sqliteDatabase;@H_301_2@
importandroid.database.sqlite.sqliteDatabase.CursorFactory;@H_301_2@
importandroid.database.sqlite.sqliteOpenHelper;@H_301_2@
publicclassDBOpenHelperextendssqliteOpenHelper{@H_301_2@
publicDBOpenHelper(Contextcontext){@H_301_2@
super(context,"olay",null,3);@H_301_2@
//TODOAuto-generatedconstructorstub@H_301_2@
}@H_301_2@
@Override@H_301_2@
publicvoidonCreate(sqliteDatabasedb){@H_301_2@
db.execsql("createtablestudent(idintegerprimarykeyautoincrement,namevarchar(20)),@H_301_2@phonevarchar(20)null");@H_301_2@@H_301_2@
/**@H_301_2@
*/@H_301_2@
publicvoidonUpgrade(sqliteDatabasedb,intoldVersion,intnewVersion){@H_301_2@
db.execsql("altertablestudentaddaccountDoublenull");@H_301_2@
@H_301_2@
4.@H_301_2@创建@H_301_2@StudentService@H_301_2@(方法的操作类)@H_301_2@
.java@H_301_2@
packagecom.example.server;@H_301_2@
importjava.util.ArrayList;@H_301_2@
importjava.util.List;@H_301_2@
importandroid.content.Context;@H_301_2@
importandroid.database.Cursor;@H_301_2@
importandroid.database.sqlException;@H_301_2@
importandroid.database.sqlite.sqliteDatabase;@H_301_2@
importcom.example.entity.Student;@H_301_2@
importcom.example.sqlite.DBOpenHelper;@H_301_2@
publicclassStudentService{@H_301_2@
privateDBOpenHelperhelper;@H_301_2@
publicStudentService(Contextcontext){@H_301_2@
helper=newDBOpenHelper(context);@H_301_2@
}@H_301_2@
/**@H_301_2@
*@H_301_2@@param@H_301_2@offset跳过前面offset记录@H_301_2@
*@H_301_2@@param@H_301_2@maxsize最多显示@H_301_2@maxsize@H_301_2@条记录@H_301_2@
*@H_301_2@@return@H_301_2@@H_301_2@List<Student>@H_301_2@
*/@H_301_2@
public@H_301_2@List<Student>getScrollDate(@H_301_2@int@H_301_2@offset,@H_301_2@int@H_301_2@maxsize){@H_301_2@
List<Student>list=@H_301_2@new@H_301_2@ArrayList<Student>();@H_301_2@
sqliteDatabasedb=@H_301_2@helper@H_301_2@.getReadableDatabase();@H_301_2@
Cursorcursor=db.rawQuery(@H_301_2@"select*fromstudentorderbyidasclimit?,?"@H_301_2@,@H_301_2@new@H_301_2@String[]{String.@H_301_2@valueOf@H_301_2@(offset),String.@H_301_2@valueOf@H_301_2@(maxsize)});@H_301_2@
while@H_301_2@(cursor.moveToNext()){@H_301_2@
int@H_301_2@sId=cursor.getInt(cursor.getColumnIndex(@H_301_2@"id"@H_301_2@));@H_301_2@
Stringname=cursor.getString(cursor.getColumnIndex(@H_301_2@"name"@H_301_2@));@H_301_2@
Stringphone=cursor.getString(cursor.getColumnIndex(@H_301_2@"phone"@H_301_2@));@H_301_2@
Doubleaccount=cursor.getDouble(cursor.getColumnIndex(@H_301_2@"account"@H_301_2@));@H_301_2@
list.add(@H_301_2@new@H_301_2@Student(sId,phone,account));@H_301_2@
}@H_301_2@
cursor.close();@H_301_2@
}@H_301_2@
/**@H_301_2@
*@H_301_2@@param@H_301_2@offset跳过前面offset记录@H_301_2@
*@H_301_2@@param@H_301_2@maxsize最多显示@H_301_2@maxsize@H_301_2@条记录@H_301_2@
*@H_301_2@@return@H_301_2@@H_301_2@Cursor@H_301_2@
*/@H_301_2@
public@H_301_2@CursorgetScrollDateReturnCursor(@H_301_2@int@H_301_2@offset,@H_301_2@int@H_301_2@maxsize){@H_301_2@
sqliteDatabasedb=@H_301_2@helper@H_301_2@.getReadableDatabase();@H_301_2@
/*Cursorcursor=db.rawQuery("selectidas_id,accountfromstudentorderbyid@H_301_2@asc@H_301_2@limit?,?",@H_301_2@
newString[]{String.valueOf(offset),String.valueOf(@H_301_2@maxsize@H_301_2@)});*/@H_301_2@
Cursorcursor=db.rawQuery(@H_301_2@"select*fromstudentorderbyidasclimit?,@H_301_2@
new@H_301_2@String[]{String.@H_301_2@valueOf@H_301_2@(offset),String.@H_301_2@valueOf@H_301_2@(maxsize)});@H_301_2@
return@H_301_2@cursor;@H_301_2@//不能关闭cursor,不然返回不了cursor@H_301_2@
}@H_301_2@
}@H_301_2@
@H_301_2@
6.@H_301_2@MainActivity.java@H_301_2@
packagecom.example.sqlite;@H_301_2@
importjava.util.ArrayList;@H_301_2@
importjava.util.HashMap;@H_301_2@
importjava.util.List;@H_301_2@
importjava.util.Map;@H_301_2@
importcom.example.entity.Student;@H_301_2@
importcom.example.server.StudentService;@H_301_2@
importandroid.os.Bundle;@H_301_2@
importandroid.app.Activity;@H_301_2@
importandroid.database.Cursor;@H_301_2@
importandroid.support.v4.widget.SimpleCursorAdapter;@H_301_2@
importandroid.view.Menu;@H_301_2@
importandroid.widget.ListView;@H_301_2@
importandroid.widget.SimpleAdapter;@H_301_2@
publicclassMainActivityextendsActivity{@H_301_2@
privateListViewlistView=null;@H_301_2@
privateStudentServicestudent=null;@H_301_2@
@Override@H_301_2@
protectedvoidonCreate(BundlesavedInstanceState){@H_301_2@
super.onCreate(savedInstanceState);@H_301_2@
setContentView(R.layout.activity_main);@H_301_2@
student=newStudentService(this);//实例化@H_301_2@StudentService@H_301_2@类@H_301_2@@H_301_2@
listView=(ListView)findViewById(R.id.listView);//获取@H_301_2@ListView@H_301_2@组件@H_301_2@@H_301_2@
//ShowListViewDate1();//使用@H_301_2@SimpleAdapter@H_301_2@来绑定数据@H_301_2@@H_301_2@
//ShowListViewDate2();//使用@H_301_2@SimpleCursorAdapter@H_301_2@绑定数据@H_301_2@@H_301_2@
@H_301_2@ShowListViewDate3();@H_301_2@//自定义适配器@H_301_2@
@H_301_2@
@H_301_2@@H_301_2@//给listView添加事件监听@H_301_2@
@H_301_2@listView@H_301_2@.setOnItemClickListener(@H_301_2@new@H_301_2@OnItemClickListener(){@H_301_2@
@Override@H_301_2@
public@H_301_2@@H_301_2@void@H_301_2@onItemClick(AdapterView<?>parent,Viewview,@H_301_2@
int@H_301_2@position,@H_301_2@long@H_301_2@id){@H_301_2@
//parent是ListView,View是选中的一行view,position是集合中一条数据的下标@H_301_2@
Students=(Student)parent.getItemAtPosition(position);@H_301_2@
Toast.@H_301_2@makeText@H_301_2@(MainActivity.@H_301_2@this@H_301_2@,@H_301_2@"姓名是:"@H_301_2@+s.getName()+@H_301_2@"电话号码是:"@H_301_2@+s.getPhone(),Toast.@H_301_2@LENGTH_LONG@H_301_2@).show();@H_301_2@
}@H_301_2@
});@H_301_2@
//使用@H_301_2@SimpleAdapter@H_301_2@来绑定数据@H_301_2@@H_301_2@
privatevoidShowListViewDate1(){@H_301_2@
List<Student>s=student.getScrollDate(0,20);//分页查询数据@H_301_2@@H_301_2@
List<Map<String,Object>>data=newArrayList<Map<String,Object>>();@H_301_2@
for(Studentstudents:s){@H_301_2@
@H_301_2@Map<String,Object>map=newHashMap<String,Object>();@H_301_2@
@H_301_2@map.put("name",students.getName());@H_301_2@
@H_301_2@map.put("phone",students.getPhone());@H_301_2@
@H_301_2@map.put("account",students.getAccount());@H_301_2@
@H_301_2@data.add(map);@H_301_2@
SimpleAdapteradapter=newSimpleAdapter(MainActivity.this,data,R.layout.items,@H_301_2@
@H_301_2@newString[]{"name","phone","account"},newint[]{R.id.name,R.id.phone,R.id.account});@H_301_2@
listView.setAdapter(adapter);@H_301_2@
//使用@H_301_2@SimpleCursorAdapter@H_301_2@绑定数据@H_301_2@@H_301_2@
privatevoidShowListViewDate2(){@H_301_2@
Cursorcursor=student.getScrollDateReturnCursor(0,20);@H_301_2@
SimpleCursorAdapteradapter=newSimpleCursorAdapter(this,cursor,255)">newString[]{"name",255)">}@H_301_2@
private@H_301_2@@H_301_2@void@H_301_2@ShowListViewDate3(){@H_301_2@
List<Student>s=@H_301_2@student@H_301_2@.getScrollDate(0,20);@H_301_2@//分页查询数据@H_301_2@
MyAdapteradapter=@H_301_2@new@H_301_2@MyAdapter(@H_301_2@this@H_301_2@,s,R.layout.@H_301_2@items@H_301_2@);@H_301_2@
@H_301_2@listView@H_301_2@.setAdapter(adapter);@H_301_2@
publicbooleanonCreateOptionsMenu(Menumenu){@H_301_2@
//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.@H_301_2@
getMenuInflater().inflate(R.menu.main,menu);@H_301_2@
returntrue;@H_301_2@
自定义适配器类MyAdapter,extendsBaseAdapter@H_301_2@@H_301_2@
MyAdapter.java@H_301_2@
importandroid.content.Context;@H_301_2@
importandroid.view.LayoutInflater;@H_301_2@
importandroid.view.View;@H_301_2@
importandroid.view.ViewGroup;@H_301_2@
importandroid.widget.BaseAdapter;@H_301_2@
importandroid.widget.TextView;@H_301_2@
publicclassMyAdapterextendsBaseAdapter{@H_301_2@
privateList<Student>student;//绑定的数据@H_301_2@@H_301_2@
privateintresource;//绑定的条目界面@H_301_2@R.layout.items@H_301_2@@H_301_2@
privateLayoutInflaterinflater;//把@H_301_2@xml@H_301_2@布局文件生成@H_301_2@view@H_301_2@对象@H_301_2@@H_301_2@
publicMyAdapter(Contextcontext,List<Student>student,intresource){@H_301_2@
this.inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//获取上下文的@H_301_2@LayoutInflater@H_301_2@@H_301_2@
this.student=student;@H_301_2@
this.resource=resource;@H_301_2@
publicintgetCount(){@H_301_2@
returnstudent.size();@H_301_2@
publicObjectgetItem(intposition){@H_301_2@
returnstudent.get(position);@H_301_2@
publiclonggetItemId(intposition){@H_301_2@
returnposition;@H_301_2@
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){@H_301_2@
if(convertView==null){@H_301_2@
convertView=inflater.inflate(resource,null);//从指定的@H_301_2@xml@H_301_2@资源中@H_301_2@inflate@H_301_2@出一个新的@H_301_2@View@H_301_2@@H_301_2@
TextViewname=(TextView)convertView.findViewById(R.id.name);//取得组件@H_301_2@@H_301_2@
TextViewphone=(TextView)convertView.findViewById(R.id.phone);//取得组件@H_301_2@@H_301_2@
TextViewaccount=(TextView)convertView.findViewById(R.id.account);//取得组件@H_301_2@@H_301_2@
Students=student.get(position);//在@H_301_2@List<Student>@H_301_2@中获取要绑定的数据@H_301_2@@H_301_2@
//绑定数据到@H_301_2@TextView@H_301_2@中@H_301_2@@H_301_2@
name.setText(s.getName());@H_301_2@
phone.setText(s.getPhone());@H_301_2@
account.setText(s.getAccount().toString());@H_301_2@
returnconvertView;@H_301_2@
@H_301_2@
原文链接:https://www.f2er.com/sqlite/200999.html