安卓開發(二)ListView顯示菜單,SQLite存儲和ListView顯示

本次的安卓應用介紹的是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;
    }
}

這裏寫圖片描述
到此爲止本次的應用已經全部完成,看完記得點贊哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章