安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
来源:互联网 发布:接入网络 编辑:程序博客网 时间:2024/06/01 13:39
本次的安卓应用介绍的是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; }}
到此为止本次的应用已经全部完成,看完记得点赞哦!
0 0
- 安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
- 安卓ListView控件显示
- Android listView显示SQlite
- SQLite数据库和ListView列表显示
- 安卓开发——问题:ScrollView中嵌套ListView时,listview只显示一行
- 安卓ListView获取信息并显示
- 安卓listview照片重复显示解决办法
- 06 - 数据操作二:sqlite数据库与listview显示
- 安卓ListView显示多个数据 单击的响应 长按弹出菜单
- ListView显示SQLite数据,EditText对数据检索。(全国城市名的显示和搜索)
- 安卓开发,listView相关(二),适配器
- listView显示图片,继承BaseAdapter(二)
- RecycleView实现ListView和GridView,用menu菜单分别显示
- Android Listview显示效果二
- android开发 列表显示(ListView)
- Android SQLite数据显示于ListView
- 代码:用ListView实现SQLite的显示
- Android ListView 分类显示(二)多布局显示
- 51nod 1067 Bash游戏 V2 博弈论
- First Step
- 数据库系统概念第十二章 事务
- Google Java Oracle 三角恋的前世今生
- 【Java学习-J.160601.0.20】Servlet 基础二
- 安卓开发(二)ListView显示菜单,SQLite存储和ListView显示
- Arduino 之木马模拟
- 集成JSF
- 【Leetcode】Longest Valid Parentheses
- iOS开发中,在一般的ViewController中使用static cell
- 站内信DB设计实现
- JSP的学习总结
- Android布局控件属性
- 一个32岁入门的70后程序员给我的启示