安卓开发(二)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;
    }
}

这里写图片描述
到此为止本次的应用已经全部完成,看完记得点赞哦!

猜你喜欢

转载自blog.csdn.net/h9f3d3/article/details/51627672
今日推荐