数据库案例2和3

23 篇文章 0 订阅

数据库案例2和3
创建一个layout

<?xml version="1.0" encoding="utf-8"?>










创建ListView视图
部分代码如下

<?xml version="1.0" encoding="utf-8"?>











创建数据库 dao包
package dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.Settings;

/**

  • Created by Administrator on 2017/4/17.
    */
    public class MyHelper extends SQLiteOpenHelper {
    public MyHelper(Context context) {
    super(context, “db”, null, 2);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
    System.out.println(“onCreate”);
    db.execSQL(“create table account(_id integer primary key autoincrement,name varchar(20),balance integer)”);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    System.out.println(“onUpgrade”);

    }
    }
    之后MainAcyivity部分代码
    package com.example.buju

import Javabean.Account
import Javabean.AccountDao
import android.app.Activity
import android.app.AlertDialog
import android.content.DialogInterface
import android.os.Bundle

import android.support.v4.app.INotificationSideChannel;
import android.support.v4.app.RemoteActionCompatParcelizer;
import android.view.View
import android.view.ViewGroup
import android.widget.*
import android.widget.AdapterView.OnItemClickListener
import com.example.buju.MainActivity;

class MainActivity : Activity() {
private var list: MutableList? = null
private var dao: AccountDao? = null
private var nameET: EditText? = null
private var balanceET: EditText? = null
private var adapter: MyAdapter? = null
private var accountLV: ListView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
dao = AccountDao(this)
list = dao!!.queryAll()
adapter = MyAdapter()
accountLV!!.adapter = adapter
}

private fun initView() {
    accountLV = findViewById<View>(R.id.lv01) as ListView
    nameET = findViewById<View>(R.id.et01) as EditText
    balanceET = findViewById<View>(R.id.et02) as EditText
    accountLV!!.onItemClickListener = MyOnItemClickListener()
}

fun add(view: View?) {
    val name = nameET!!.text.toString().trim { it <= ' ' }
    val balance = balanceET!!.text.toString().trim { it <= ' ' }
    val a = Account(name, if (balance == "") 0 else balance.toInt())
    dao!!.insert(a)
    list!!.add(a)
    adapter!!.notifyDataSetChanged()
    accountLV!!.setSelection(accountLV!!.count - 1)
    nameET!!.setText("")
    balanceET!!.setText("")
}

private inner class MyAdapter : BaseAdapter() {
    override fun getCount(): Int {
        return list!!.size
    }

    override fun getItem(position: Int): Any {
        return list!![position]
    }

    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    override fun getView(position: Int, convertView: View, parent: ViewGroup): View {
        val item = convertView
            ?: View.inflate(
                applicationContext, R.layout.listview_itemd, null
            )
        val tvid = item.findViewById<View>(R.id.tvid) as TextView
        val tvname = item.findViewById<View>(R.id.tvname) as TextView
        val tvbalance = item.findViewById<View>(R.id.tvprice) as TextView
        val a: Account = list!![position]
        tvid.setText(a.getId().toString() + "")
        tvname.setText(a.getName())
        tvbalance.setText(a.getBalance().toString() + "")
        val ivup = item.findViewById<View>(R.id.ivup) as ImageView
        val ivdown = item.findViewById<View>(R.id.ivdown) as ImageView
        val ivdelete = item.findViewById<View>(R.id.ivdelete) as ImageView
        ivup.setOnClickListener {
            a.setBalance(a.getBalance() + 1)
            notifyDataSetChanged()
            dao!!.update(a)
        }
        ivdown.setOnClickListener {
            a.setBalance(a.getBalance() - 1)
            notifyDataSetChanged()
            dao!!.update(a)
        }
        ivdelete.setOnClickListener {
            val listener =
                DialogInterface.OnClickListener { dialogInterface, which ->
                    list!!.remove(a)
                    dao!!.delete(a.getId())
                    notifyDataSetChanged()
                }
            val builder: AlertDialog.Builder = AlertDialog.Builder(this@MainActivity)
            builder.setTitle("确定要删除吗?")
            builder.setPositiveButton("确定", listener)
            builder.setNegativeButton("取消", null)
            builder.show()
        }
        return item

    }
}

private inner class MyOnItemClickListener : OnItemClickListener {
    override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) {
        val a: Account = parent.getItemAtPosition(position) as Account
        Toast.makeText(applicationContext, a.toString(), Toast.LENGTH_SHORT).show()
    }
}

}
创建ACCount构造方法
package Javabean;

public class Account {
private Long id;
private String name;
private int balance;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public int getBalance() {
    return balance;
}
public void setBalance(int balance) {
    this.balance = balance;
}
public Account(Long id, String name, int balance) {
    super();
    this.id = id;
    this.name = name;
    this.balance = balance;
}
public Account( String name, int balance) {
    super();
    this.name = name;
    this.balance = balance;
}
public Account() {
    super();
}
public String toString(){
    return "[序号:"+id+",商品名称:"+name+",余额:"+balance+"]";
}

}
创建Accountdao包的连接
package Javabean;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.buju.MainActivity;
import java.*;
import java.util.ArrayList;
import java.util.List;

import dao.MyHelper;

/**

  • Created by Administrator on 2017/4/17.
    */
    public class AccountDao {
    private MyHelper myHelper;
    public AccountDao(Context context){
    myHelper=new MyHelper(context);
    }
    public void insert(Account account){
    SQLiteDatabase db=myHelper.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put(“name”,account.getName());
    contentValues.put(“balance”,account.getBalance());
    long id=db.insert(“account”,null,contentValues);
    account.setId(id);
    db.close();
    }
    public int delete(long id){
    SQLiteDatabase db=myHelper.getWritableDatabase();
    int count=db.delete(“account”,"_id=?",new String[] {id+""});
    db.close();
    return count;
    }
    public int update(Account account){
    SQLiteDatabase db=myHelper.getWritableDatabase();
    ContentValues contentValues=new ContentValues();
    contentValues.put(“name”,account.getName());
    contentValues.put(“balance”,account.getBalance());
    int count=db.update(“account”,contentValues,"_id=?",new String[] {account.getId()+""});
    db.close();
    return count;
    }
    public List queryAll(){
    SQLiteDatabase db=myHelper.getReadableDatabase();
    Cursor cursor=db.query(“account”,null,null,null,null,null,“balance DESC”);
    List list=new ArrayList();
    while(cursor.moveToNext()){
    long id=cursor.getLong(cursor.getColumnIndex("_id"));
    String name=cursor.getString(1);
    int balance=cursor.getInt(2);
    list.add(new Account(id,name,balance));
    }
    cursor.close();
    db.close();
    return list;
    }
    }
    以上是一个完整程序
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值