Android数据库知识点(实例)增删改查,listview显示

【淘宝商城】腾讯QQ币/Q币/1QB/1个Q币按元直充★QBQQ币自动充值




今天实例讲解一个数据库的例子

  • 200px

布局activity_main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TableLayout 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      >
      <TableRow >
          <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="书籍名:"
              android:textSize="15sp"
              android:textColor="#f00"
              />
 <EditText  
 android:id="@+id/bookname" 
 android:layout_width="200px" 
 android:layout_height="wrap_content" 
 >
 </EditText>
  </TableRow>
    <TableRow >
  <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="作者名:"
              android:textSize="15sp"
              android:textColor="#f00"
              />
 <EditText  
 android:id="@+id/author" 
 android:layout_width="200px" 
 android:layout_height="wrap_content" 
 >
 </EditText>
 </TableRow>
 </TableLayout>
 <TextView 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="数据库信息:"
              android:textSize="15sp"
              android:textColor="#f00"
              />
 <ListView 
 android:id="@+id/bookslist" 
 android:layout_width="fill_parent" 
 android:layout_height="wrap_content"
 >
 </ListView>   

</LinearLayout>



java 代码 MysqlOpenHelp

package com.example.sqlitedemo;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

//继承 SQLiteOpenHelper,别忘了
public class MysqlOpenHelp extends SQLiteOpenHelper {

private final static String TABLE_NAME = "bookinfo"; //表名
public final static String BOOK_ID = "bookid"; //     id列
public final static String BOOK_NAME = "bookname"; //数据名列
public final static String BOOK_AUTHOR = "bookauthor"; //数据作者类

public MysqlOpenHelp(Context context, String name, CursorFactory factory,
int version) {
super(context, "Book.db", null, 1);//参数1,上下文,参数2,数据库名,参数3,游标工程一般null,参数4,版本
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO Auto-generated method stub

String sql=
"CREATE TABLE " + TABLE_NAME + " (" + BOOK_ID
+ " INTEGER primary key autoincrement, " + BOOK_NAME + " text, "+ BOOK_AUTHOR +" text);";

//大家一定要注意这些数据字母别少写了,多写点,我以前写错一个找个一上午,原来少个标点符号。

arg0.execSQL(sql);//执行



}
//更新数据库
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
String sql="if not exists "+"bookinfo";
arg0.execSQL(sql);
onCreate(arg0);
}

//查询数据
public Cursor select() {
SQLiteDatabase db=this.getWritableDatabase();
Cursor cursor=db.query("bookinfo", null,null, null, null, null, null);//数据库查询很多种方法,建议这种。
return cursor;//返回数据
}

//插入数据 注意形参参数
public long insert(String name,String author){

SQLiteDatabase db=this.getWritableDatabase();//写数据库
ContentValues values=new ContentValues();//使用ContentValues


values.put("bookname", name);//往数据库bookname列添加姓书名
values.put("bookauthor", author);往数据库bookauthor列添加作者名
long row=db.insert("bookinfo", null, values);//插入数据
return row;//返回插入的数据
}

//删除数据,一般删除数据都是删除id就行了  注意参数
public void delete(int id){
SQLiteDatabase db=this.getWritableDatabase();//写数据库
String where="bookid"+"=?";
String[] idvalues={Integer.toString(id)};//转换一下
db.delete("bookinfo", where,idvalues);//删除字符串组的id
}

//更新数据,id name author都要变,也就是添加和id删除的合并
public void Update(int id ,String name,String author){
SQLiteDatabase db=this.getWritableDatabase();
String where="bookid"+"=?";
String[] idvalues={Integer.toString(id)};
ContentValues values=new ContentValues();
values.put("bookname", name);
values.put("bookauthor", author);
db.update("bookinfo", values, where, idvalues);
}
}

 MainActivity

package com.example.sqlitedemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

//借口实现时间监听
public class MainActivity extends Activity implements AdapterView.OnItemClickListener {
private MysqlOpenHelp mBooksDB;//声明数据库辅助类
private Cursor mCursor;//声明Cursor cursor指的是每一个数据
private EditText BookName;//声明 BookName, BookAuthor, BookList
private EditText BookAuthor;
private ListView BooksList;

private int id = 0;

//用到菜单,你可以用按钮,我明天给带来一个按钮的事件
protected final static int MENU_ADD = Menu.FIRST;
protected final static int MENU_DELETE = Menu.FIRST + 1;
protected final static int MENU_UPDATE = Menu.FIRST + 2;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setUpViews();//更新view视图
}
public void setUpViews(){
mBooksDB = new MysqlOpenHelp(this,"Book.db" , null,1 );//实例化
mCursor = mBooksDB.select();//调用查询
//实例化BookName, BookAuthor, BookList
BookName = (EditText)findViewById(R.id.bookname);
BookAuthor = (EditText)findViewById(R.id.author);
BooksList = (ListView)findViewById(R.id.bookslist);

BooksList.setAdapter(new BooksListAdapter(this, mCursor));
BooksList.setOnItemClickListener(this);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//菜单操作
menu.add(Menu.NONE, MENU_ADD, 0, "ADD");
menu.add(Menu.NONE, MENU_DELETE, 0, "DELETE");
menu.add(Menu.NONE, MENU_UPDATE, 0, "UPDATE");
return true;
}
//菜单事件监听
public boolean onOptionsItemSelected(MenuItem item)
{
super.onOptionsItemSelected(item);

//item.getid,获取按钮id
switch (item.getItemId())
{
case MENU_ADD:
add();//添加数据,调用add
break;
case MENU_DELETE:
delete();//删除数据,调用delete
break;
case MENU_UPDATE:
update();//更新数据,调用update
break;
}
return true;
}

public void add(){
String name = BookName.getText().toString();
String author = BookAuthor.getText().toString();
//书名和作者都不能为空,或者退出
if (name.equals("") || author.equals("")){
return;
}
mBooksDB.insert(name, author);//调用MysqlOpenHelp插入类
mCursor.requery();//同步更新游标
BooksList.invalidateViews();//动态更新
BookName.setText("");
BookAuthor.setText("");
Toast.makeText(this, "Add Successed!", Toast.LENGTH_SHORT).show();
}

public void delete(){

//如果数据为0,返回空,应为id从1开始
if (id== 0) {
return;
}
mBooksDB.delete(id);//调用MysqlOpenHelp删除类
mCursor.requery();//同步更新游标
BooksList.invalidateViews();//动态更新
BookName.setText("");
BookAuthor.setText("");
Toast.makeText(this, "Delete Successed!", Toast.LENGTH_SHORT).show();
}
//这个和前面两个差不多
public void update(){
String bookname = BookName.getText().toString();
String author = BookAuthor.getText().toString();
//书名和作者都不能为空,或者退出
if (bookname.equals("") || author.equals("")){
return;
}
mBooksDB.Update(id, bookname, author);
mCursor.requery();
BooksList.invalidateViews();
BookName.setText("");
BookAuthor.setText("");
Toast.makeText(this, "Update Successed!", Toast.LENGTH_SHORT).show();
}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

mCursor.moveToPosition(position);
id = mCursor.getInt(0);
BookName.setText(mCursor.getString(1));
BookAuthor.setText(mCursor.getString(2));

}
//使用BaseAdapter
public class BooksListAdapter extends BaseAdapter{
private Context mContext;
private Cursor mCursor;
public BooksListAdapter(Context context,Cursor cursor) {

mContext = context;
mCursor = cursor;
}
@Override
public int getCount() {
return mCursor.getCount();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView mTextView = new TextView(mContext);
mCursor.moveToPosition(position);// 移动光标到一个绝对的位置
mTextView.setText(mCursor.getString(1) + "___" + mCursor.getString(2));//显示书名和作者名
return mTextView;
}

}
}
效果图



   第一次在csdn写博文,我也是菜鸟,更学android满3个月,希望记住自己学习的日子,也希望给新手解除迷惑。

写的不好,大家多多见谅。明天我将修改用button实现。希望大家多多关注!


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现Android商品增删改查,可以使用ListView显示数据。通过定义适配器将数据绑定到ListView上,当需要增删改查时,通过修改适配器的数据源实现ListView数据的操作。同时,还需要为ListView设置相应的点击事件,以便用户可以根据需要选择相应的操作。 ### 回答2: Android开发中,列表是很常见的组件,而ListView是其中最常用的列表组件之一。ListView可以将一组数据以列表的方式展示出来,而对于一些有增删改查需要的商品,ListView可以很好地满足应用的需求。 实现商品增删改查功能需要以下几个步骤: 1. 创建一个JavaBean对象,用于存储商品信息。例如,我们可以创建一个Product类,其中包含商品的名称、价格、简介等属性。 2. 在布局文件中添加一个ListView控件,用于展示商品列表。可以使用系统提供的布局文件simple_list_item_1,也可以自己定义布局。 3. 创建一个适配器Adapter,用于将数据与ListView中的每一项绑定。对于初学者来说,可以使用简单的ArrayAdapter。如果需要更复杂的布局或者对数据显示控制要求更高,可以使用BaseAdapter或者RecyclerView。 4. 在Activity或者Fragment中创建一个列表数据List,在需要的时候对列表进行增删改查的操作。 5. 将数据与ListView进行绑定,将Adapter设置为ListView的适配器。 下面以添加商品功能为例子,介绍一下实现步骤。 1. 创建Product类 public class Product { private String name; private String intro; private float price; public Product(String name, String intro, float price) { this.name = name; this.intro = intro; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getIntro() { return intro; } public void setIntro(String intro) { this.intro = intro; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } } 2. 创建ListView控件 <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@null" android:dividerHeight="0dp"/> 3. 创建适配器ProductAdapter public class ProductAdapter extends ArrayAdapter<Product> { private int resourceId; public ProductAdapter(@NonNull Context context, int resource, @NonNull List<Product> objects) { super(context, resource, objects); resourceId = resource; } @NonNull @Override public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { View view; ViewHolder viewHolder; if (convertView == null) { view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false); viewHolder = new ViewHolder(); viewHolder.tvName = view.findViewById(R.id.tv_name); viewHolder.tvIntro = view.findViewById(R.id.tv_intro); viewHolder.tvPrice = view.findViewById(R.id.tv_price); view.setTag(viewHolder); } else { view = convertView; viewHolder = (ViewHolder) view.getTag(); } Product product = getItem(position); viewHolder.tvName.setText(product.getName()); viewHolder.tvIntro.setText(product.getIntro()); viewHolder.tvPrice.setText(String.format(Locale.getDefault(), "%.2f", product.getPrice())); return view; } static class ViewHolder { TextView tvName; TextView tvIntro; TextView tvPrice; } } 4. 创建数据列表 private List<Product> mProductList = new ArrayList(); 5. 添加商品操作 mProductList.add(new Product("可乐", "美味又可口,解渴好选择!", 3.5f)); mProductList.add(new Product("鸡蛋", "优质新鲜鸡蛋,营养与健康!", 1.2f)); ProductAdapter adapter = new ProductAdapter(this, R.layout.item_product, mProductList); ListView listView = findViewById(R.id.listview); listView.setAdapter(adapter); 以上是实现ListView显示商品增删改查的简单示例。在实际应用中还有很多细节需要考虑,例如对列表Item的点击事件和长按事件的处理,更新数据时需要调用Adapter的notifyDataSetChanged()方法等等。希望这个简单的例子能够帮助读者了解并熟悉在Android中使用ListView显示商品增删改查。 ### 回答3: Android商品的增删改查功能是在开发Android应用时常见的功能。使用ListView来展示商品列表是Android应用中的一种常用的方式。 首先,我们需要创建一个商品类,包含商品的名称、描述、图片和价格等信息。然后我们可以使用SQLite数据库来存储商品信息,商品的增删改查操作就是对数据库中的数据进行增删改查操作。 接着,我们需要在应用中定义一个ListView来展示商品列表。可以在ListView显示商品的名称、图片和价格等信息。我们可以为ListView创建一个自定义的Adapter,将商品的信息绑定到ListView上。 在实现商品的增删改查时,我们可以在应用中新增一个Activity,用于添加、修改和删除商品的信息。我们可以在页面中添加输入框和按钮,实现对商品信息的操作。当用户添加、修改或删除商品时,我们需要将操作完成后的数据保存到数据库中,并通过刷新ListView的方式来更新商品列表。 以上是Android商品增删改查的基本流程。通过使用ListView展示商品信息,并实现对商品信息的增删改查操作,可以提高应用的用户体验,增加应用的交互性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值