AddActivity:
package com.example.yzlweek7
import android.content.ContentValues
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.contentValuesOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class AddActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
// val dbHelper=MyDatabaseHelper(this,"School.db",2)
val addButton=findViewById<Button>(R.id.addButton)
val idNumber=findViewById<EditText>(R.id.idNumber)
val Name=findViewById<EditText>(R.id.Name)
val collegeName=findViewById<EditText>(R.id.collegeName)
val ageNumber=findViewById<EditText>(R.id.ageNumber)
val phoneNumber=findViewById<EditText>(R.id.phoneNumber)
addButton.setOnClickListener {
// val db=dbHelper.writableDatabase
// val value=ContentValues().apply {
// put("id",idNumber.text.toString())
// put("name",Name.text.toString())
// put("college",collegeName.text.toString())
// put("age",ageNumber.text.toString())
// put("phone",phoneNumber.text.toString())
// }
// db.insert("Student",null,value)
// finish()
val uri= Uri.parse("content://com.example.myprovider.provider/student")
val values= contentValuesOf("id" to idNumber.text.toString(),
"name" to Name.text.toString(),"college" to collegeName.text.toString(),"age" to ageNumber.text.toString(),
"phone" to phoneNumber.text.toString())
contentResolver.insert(uri,values)
finish()
}
}
}
activity_add布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AddActivity"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:text="添加学生记录"
android:textSize="50dp">
</TextView>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/idName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="学号">
</TextView>
<EditText
android:id="@+id/idNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/idName"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/nameName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="姓名">
</TextView>
<EditText
android:id="@+id/Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/nameName"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/college"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="学院">
</TextView>
<EditText
android:id="@+id/collegeName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/college"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="年龄">
</TextView>
<EditText
android:id="@+id/ageNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/age"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="电话">
</TextView>
<EditText
android:id="@+id/phoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/phone"
android:maxLines="1">
</EditText>
</RelativeLayout>
<Button
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="插入"
android:textSize="20dp"
android:padding="20dp">
</Button>
</LinearLayout>
DeleteActivity:
package com.example.yzlweek7
import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.contentValuesOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class DeleteActivity : AppCompatActivity() {
private lateinit var queryActivity: queryActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_delete)
val updateButton=findViewById<Button>(R.id.updateButton)
val deleteButton=findViewById<Button>(R.id.deleteButton)
// val dbHelper=MyDatabaseHelper(this,"School.db",2)
val id=intent.getStringExtra("student_id")
val idNumber=findViewById<TextView>(R.id.idNumber)
val Name=findViewById<EditText>(R.id.Name)
val collegeName=findViewById<EditText>(R.id.collegeName)
val ageNumber=findViewById<EditText>(R.id.ageNumber)
val phoneNumber=findViewById<EditText>(R.id.phoneNumber)
idNumber.text=id
queryActivity = queryActivity()
updateButton.setOnClickListener {
// val db=dbHelper.writableDatabase
// val values= ContentValues().apply {
// put("name",Name.text.toString())
// put("college",collegeName.text.toString())
// put("age",ageNumber.text.toString())
// put("phone",phoneNumber.text.toString())
// }
// db.update("Student",values,"id=?", arrayOf(id))
// finish()
val uri= Uri.parse("content://com.example.myprovider.provider/student/$id")
val values= contentValuesOf("name" to Name.text.toString(),"college" to collegeName.text.toString(),
"age" to ageNumber.text.toString(), "phone" to phoneNumber.text.toString())
contentResolver.update(uri,values,null,null)
finish()
}
deleteButton.setOnClickListener {
// val db=dbHelper.writableDatabase
// db.delete("Student","id=?", arrayOf(id))
// finish()
val uri=Uri.parse("content://com.example.myprovider.provider/student/$id")
contentResolver.delete(uri,null,null)
finish()
}
}
}
activity_delete布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DeleteActivity"
android:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="10dp"
android:text="编辑学生记录"
android:textSize="50dp">
</TextView>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/idName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="学号">
</TextView>
<TextView
android:id="@+id/idNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/idName"
android:padding="10dp">
</TextView>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/nameName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="姓名">
</TextView>
<EditText
android:id="@+id/Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/nameName"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/college"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="学院">
</TextView>
<EditText
android:id="@+id/collegeName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/college"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="年龄">
</TextView>
<EditText
android:id="@+id/ageNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/age"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="20dp">
<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="电话">
</TextView>
<EditText
android:id="@+id/phoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/phone"
android:maxLines="1">
</EditText>
</RelativeLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
>
<Button
android:id="@+id/updateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:padding="20dp"
android:text="修改"
android:textColor="@color/white">
</Button>
<Button
android:id="@+id/deleteButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:layout_toRightOf="@+id/updateButton"
android:layout_marginLeft="10dp"
android:padding="20dp"
android:text="删除"
android:textColor="@color/white">
</Button>
</RelativeLayout>
</LinearLayout>
QueryActivity:
package com.example.yzlweek7
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.ListView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class queryActivity() : AppCompatActivity() {
private val studentList=ArrayList<Student>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_query)
refresh()
}
fun refresh() {
// studentList.clear()
// val dbHelper=MyDatabaseHelper(this,"School.db",2)
// val db=dbHelper.readableDatabase
// val cursor=db.query("Student",null,null,null,null,null,null)
// val nameIndex = cursor.getColumnIndex("name")
// val idIndex = cursor.getColumnIndex("id")
// val collegeIndex = cursor.getColumnIndex("college")
// if (cursor.moveToFirst()){
// do{
// val name = cursor.getString(nameIndex)
// val id = cursor.getString(idIndex)
// val college = cursor.getString(collegeIndex)
// studentList.add(Student(id,name,college))
// }while (cursor.moveToNext())
// }
// cursor.close()
// val adapter=StudentAdapter(this,R.layout.student_item,studentList)
// val listView=findViewById<ListView>(R.id.listView)
// listView.adapter=adapter
// listView.setOnItemClickListener{parent,view,position,id->
// val student=studentList[position]
// val intent= Intent(this,DeleteActivity::class.java).apply {
// putExtra("student_id",student.id)
// }
// startActivity(intent)
// }
studentList.clear()
val uri = Uri.parse("content://com.example.myprovider.provider/student")
contentResolver.query(uri, null, null, null, null)?.apply {
while (moveToNext()) {
val name = getString(getColumnIndexOrThrow("name"))
val id = getString(getColumnIndexOrThrow("id"))
val college = getString(getColumnIndexOrThrow("college"))
studentList.add(Student(id,name,college))
}
close()
}
val adapter = StudentAdapter(this, R.layout.student_item, studentList)
val listView = findViewById<ListView>(R.id.listView)
listView.adapter = adapter
listView.setOnItemClickListener { parent, view, position, id ->
val student = studentList[position]
val intent = Intent(this, DeleteActivity::class.java).apply {
putExtra("student_id", student.id)
}
startActivity(intent)
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.main,menu)
return true
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.refresh -> refresh()
}
return true
}
}
activity_query布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".queryActivity"
android:orientation="vertical">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
MainActivity:
package com.example.yzlweek7
import android.content.ContentValues
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// val dbHelper=MyDatabaseHelper(this,"School.db",2)
// val CreateButton=findViewById<Button>(R.id.CreateButton)
val AddButton=findViewById<Button>(R.id.AddButton)
val QueryOrReviseButton=findViewById<Button>(R.id.QueryOrReviseButton)
// initStudent()
// CreateButton.setOnClickListener {
// dbHelper.writableDatabase
// }
AddButton.setOnClickListener {
val intent=Intent(this,AddActivity::class.java)
startActivity(intent)
}
QueryOrReviseButton.setOnClickListener {
val intent=Intent(this,queryActivity::class.java)
startActivity(intent)
}
}
fun initStudent(){
val dbHelper=MyDatabaseHelper(this,"School.db",2)
val db=dbHelper.writableDatabase
val value1= ContentValues().apply {
put("id","2212190112")
put("name","茁猫")
put("college","信息学院")
put("age","20")
put("phone","123456")
}
db.insert("Student",null,value1)
val value2=ContentValues().apply {
put("id","2212190113")
put("name","猪猫")
put("college","信息学院")
put("age","20")
put("phone","1234567")
}
db.insert("Student",null,value2)
}
}
activity_main布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<!-- <Button-->
<!-- android:id="@+id/CreateButton"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="Create database">-->
<!-- </Button>-->
<Button
android:id="@+id/AddButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Add data">
</Button>
<Button
android:id="@+id/QueryOrReviseButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Query&Revise data">
</Button>
</LinearLayout>
student_item布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="60dp">
<RelativeLayout
android:id="@+id/leftLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical">
<TextView
android:id="@+id/StudentName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_marginLeft="10dp">
</TextView>
<TextView
android:id="@+id/StudentId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_below="@+id/StudentName"
android:layout_marginLeft="10dp">
</TextView>
<TextView
android:id="@+id/StudentCollege"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="10dp">
</TextView>
</RelativeLayout>
</LinearLayout>
student:
package com.example.yzlweek7
class Student(val id:String,val name:String,val college:String)
StudentAdapter:
package com.example.yzlweek7
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.TextView
class StudentAdapter(activity: Activity,val resourceId:Int,data:List<Student>):ArrayAdapter<Student>(activity,resourceId,data) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view=LayoutInflater.from(context).inflate(resourceId,parent,false)
val StudentName=view.findViewById<TextView>(R.id.StudentName)
val StudentId=view.findViewById<TextView>(R.id.StudentId)
val StudentCollege=view.findViewById<TextView>(R.id.StudentCollege)
val student=getItem(position)
if (student!=null){
StudentName.text=student.name
StudentId.text=student.id
StudentCollege.text=student.college
}
return view
}
}
MyDatabaseHelper:
package com.example.yzlweek7
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.widget.TimePicker
import android.widget.Toast
class MyDatabaseHelper(val context: Context,name:String,version:Int):SQLiteOpenHelper(context,name,null,version) {
private val createStudent="create table Student ("+
"id text primary key,"+
"name text,"+
"college text,"+
"age text,"+
"phone text)"
override fun onCreate(db: SQLiteDatabase?) {
db?.execSQL(createStudent)
Toast.makeText(context,"Create succeeded",Toast.LENGTH_SHORT).show()
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
db?.execSQL("drop table if exists Student")
onCreate(db)
}
}
menu布局:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/refresh"
android:title="刷新">
</item>
</menu>