本次的安卓應用介紹的是listview和安卓SQLite數據庫的應用,主要功能是:
1.創建數據庫,並可以向數據庫中添加菜單。菜單的條目有:編號、圖片、名稱、價格、簡介。
2.讀取數據中的菜單,並在自己設計的ListView裏面顯示對應條目。
我採用的是SimpAdapter.具體代碼如下:
佈局文件:
main.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="match_parent"
android:orientation="vertical"
android:layout_margin="5dp"
tools:context="${relativePackage}.${activityClass}" >
<LinearLayout
android:id="@+id/addll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="查看菜單"
android:layout_weight="1"
android:onClick="chakan"
android:textColor="#000000"
android:textSize="10sp"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="清空菜單"
android:layout_weight="1"
android:onClick="shanchu"
android:textColor="#000000"
android:textSize="10sp"/>
</LinearLayout>
<ListView
android:id="@+id/lvi"
android:layout_below="@id/addll"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
item.xml
<?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="wrap_content"
android:orientation="horizontal" >
<TextView android:id="@+id/id"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"
android:singleLine="true"
android:textColor="#000000"
android:textSize="20sp"/>
<ImageView android:id="@+id/img"
android:layout_width="50dp"
android:layout_height="50dp"
android:singleLine="true"
android:src="@drawable/p1"/>
<TextView android:id="@+id/name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="2"
android:textColor="#000000"
android:textSize="10sp"/>
<TextView android:id="@+id/price"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="10"
android:textColor="#000000"
android:textSize="10sp"/>
<TextView android:id="@+id/disc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="2"
android:textColor="#000000"
android:textSize="5sp"/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:text="點菜"
android:textColor="#000000"
android:textSize="8sp"
/>
</LinearLayout>
Java文件:
MainActivity.java
package com.example.menu;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ListView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
Menusql helper;//數據庫對象
int [] icons={R.drawable.p1,R.drawable.p2,R.drawable.p3,R.drawable.p4};//圖片
List<menu> menuifos=null;
int i=0;//存儲對象的容器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
helper=new Menusql(this);
helper.getWritableDatabase();
read();
}
//創建四條數據庫記錄
public void add()
{
SQLiteDatabase db=helper.getWritableDatabase();
db.execSQL("insert into menu(img,name,price,disc)"+"values(?,?,?,?)",new String[]{String.valueOf(icons[0]),"肉夾饃","18","正宗西安肉夾饃"});
db.execSQL("insert into menu(img,name,price,disc)"+"values(?,?,?,?)",new String[]{String.valueOf(icons[1]),"可樂雞翅","18","可口可樂製作很香甜"});
db.execSQL("insert into menu(img,name,price,disc)"+"values(?,?,?,?)",new String[]{String.valueOf(icons[2]),"北京烤鴨","18","來自北京全聚德"});
db.execSQL("insert into menu(img,name,price,disc)"+"values(?,?,?,?)",new String[]{String.valueOf(icons[3]),"紅燒龍蝦","18","澳洲龍蝦值得擁有"});
db.close();
}
//用simpleAdapter 來顯示Listview
public void read()
{
SQLiteDatabase db=helper.getReadableDatabase();
menuifos=new ArrayList<menu>();
Cursor cu=db.query("menu",null,null,null,null,null,null);
try{
while(cu.moveToNext())
{
menu m=new menu();
m.setid(cu.getString(0));
m.setimg(cu.getString(1));
m.setname(cu.getString(2));
m.setprice(cu.getString(3));
m.setdisc(cu.getString(4));
menuifos.add(m);
}}catch(Exception e){Log.e("error","error");}
cu.close();
List<Map<String,Object>> data=new ArrayList<Map<String,Object>>();
for(menu p : menuifos){
Map<String, Object> map = new HashMap<String, Object>();
System.out.println(p.getid()+p.getname()+p.getimg()+p.getprice());
map.put("id",Integer.parseInt(p.getid())-i);
map.put("img", Integer.parseInt(p.getimg()));
map.put("name",p.getname());
map.put("price",p.getprice());
map.put("disc",p.getdisc());
data.add(map);
}
ListView listview=(ListView)findViewById(R.id.lvi);
String [] from={"id","img","name","price","disc"};
int [] to={R.id.id,R.id.img,R.id.name,R.id.price,R.id.disc};
SimpleAdapter adapter=new SimpleAdapter(MainActivity.this,data,R.layout.item,from,to);
listview.setAdapter(adapter);
Log.i("ff","kk");
}
//按鈕時間響應
public void chakan(View v)
{
add();
read();
}
public void delete()
{
SQLiteDatabase db=helper.getWritableDatabase();
db.delete("menu", null, null);
db.close();
}
public void shanchu(View v)
{
delete();
read();
i=i+4;
}
}
數據庫類:menusql.java
package com.example.menu;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class Menusql extends SQLiteOpenHelper{
public Menusql(Context context) {
super(context,"men.db",null,5);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table menu(id integer primary key autoincrement,"+
"img varchar(20),"+
"name varchar(20),"+
"price varchar(20),"+
"disc varchar(100))");
Log.i("ddddddddd","ffffffffff");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("alter table person add account varchar(20)");
}
public SQLiteDatabase getSQLiteDatabase() {
// TODO Auto-generated method stub
return null;
}
}
菜單類:menu.java
package com.example.menu;
public class menu {
public String id;
public String img;
public String name;
public String price;
public String disc;
public void setid(String i){
id=i;
}
public void setimg(String i){
img=i;
}
public void setname(String n){
name=n;
}
public void setprice(String p){
price=p;
}
public void setdisc(String d){
disc=d;
}
public String getid(){
return id;
}
public String getimg(){
return img;
}
public String getname(){
return name;
}
public String getprice(){
return price;
}
public String getdisc(){
return disc;
}
}
到此爲止本次的應用已經全部完成,看完記得點贊哦!