activity_add布局:
<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/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>
AddActivity:
package com.example.yzlweek8
import android.content.ContentValues
import android.net.Uri
import android.os.Bundle
import android.util.Log
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
import okhttp3.Call
import okhttp3.Callback
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import java.io.IOException
class AddActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
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 client = OkHttpClient()
val url = "http://2452x7g449.wicp.vip:9998/Service1.asmx/insertStudent"
val requestBody = FormBody.Builder()
.add("name",Name.text.toString())
.add("dept",collegeName.text.toString())
.add("age",ageNumber.text.toString())
.add("phone",phoneNumber.text.toString())
.build()
val request = Request.Builder()
.url(url)
.post(requestBody)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
// 解析响应内容
Log.d("DeleteActivity", "插入成功")
} else {
Log.d("DeleteActivity", "插入失败")
}
}
})
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>
DeleteAcitivity:
package com.example.yzlweek8
import android.content.ContentValues
import android.net.Uri
import android.os.Bundle
import android.util.Log
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
import okhttp3.Call
import okhttp3.Callback
import okhttp3.FormBody
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import java.io.IOException
class AddActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_add)
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 client = OkHttpClient()
val url = "http://2452x7g449.wicp.vip:9998/Service1.asmx/insertStudent"
val requestBody = FormBody.Builder()
.add("name",Name.text.toString())
.add("dept",collegeName.text.toString())
.add("age",ageNumber.text.toString())
.add("phone",phoneNumber.text.toString())
.build()
val request = Request.Builder()
.url(url)
.post(requestBody)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
// 解析响应内容
Log.d("DeleteActivity", "插入成功")
} else {
Log.d("DeleteActivity", "插入失败")
}
}
})
finish()
}
}
}
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/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>
mainActivity:
package com.example.yzlweek8
import android.content.Intent
import android.os.Bundle
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 QueryOrReviseButton=findViewById<Button>(R.id.QueryOrReviseButton)
val AddButton=findViewById<Button>(R.id.AddButton)
AddButton.setOnClickListener {
val intent=Intent(this,AddActivity::class.java)
startActivity(intent)
}
QueryOrReviseButton.setOnClickListener {
val intent= Intent(this,queryActivity::class.java)
startActivity(intent)
}
}
}
activity_querry布局:
<?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>
querryActivity:
package com.example.yzlweek8
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
import okhttp3.Call
import okhttp3.Callback
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserFactory
import java.io.IOException
import java.io.StringReader
import kotlin.concurrent.thread
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()
HttpUtil.QueryStudents("http://2452x7g449.wicp.vip:9998/Service1.asmx/QueryStudents",object :
Callback {
override fun onResponse(call: Call, response: Response) {
val responseData=response.body?.string()
if (responseData!=null){
parseXMLWithPull(responseData)
}
}
override fun onFailure(call: Call, e: IOException) {
e.printStackTrace()
}
})
}
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
}
private fun parseXMLWithPull(xmlData:String){
try {
val factory= XmlPullParserFactory.newInstance()
val xmlPullParser=factory.newPullParser()
xmlPullParser.setInput(StringReader(xmlData))
var eventType=xmlPullParser.eventType
var id=""
var name=""
var dept=""
var age=""
var phone=""
while (eventType!= XmlPullParser.END_DOCUMENT){
val nodeName=xmlPullParser.name
when(eventType){
//开始解析某个节点
XmlPullParser.START_TAG->{
when(nodeName){
"id"->id=xmlPullParser.nextText()
"name"->name=xmlPullParser.nextText()
"dept"->dept=xmlPullParser.nextText()
"age"->age=xmlPullParser.nextText()
"phone"->phone=xmlPullParser.nextText()
}
}
//完成解析某个节点'
XmlPullParser.END_TAG->{
if("Table"==nodeName){
Log.d("MainActivity", "id is $id")
Log.d("MainActivity", "name is $name")
Log.d("MainActivity", "dept is $dept")
Log.d("MainActivity", "age is $age")
Log.d("MainActivity", "phone is $phone")
studentList.add(Student(id,name,dept,age,phone))
}
}
}
eventType=xmlPullParser.next()
}
// 在主线程中更新 UI
runOnUiThread {
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)
putExtra("student_name",student.name)
putExtra("student_dept",student.dept)
putExtra("student_age",student.age)
putExtra("student_phone",student.phone)
}
startActivity(intent)
}
}
}catch (e:Exception){
e.printStackTrace()
}
}
}
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>
StudentAdapter:
package com.example.yzlweek8
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.dept
}
return view
}
}
student:
package com.example.yzlweek8
class Student(val id:String,val name:String,val dept:String,val age:String,val phone:String)
HttpUtil:
package com.example.yzlweek8
import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.BufferedReader
import java.io.InputStreamReader
import java.lang.StringBuilder
import java.net.HttpURLConnection
import java.net.Inet4Address
import java.net.URL
import kotlin.concurrent.thread
object HttpUtil {
fun QueryStudents(address: String,callback:okhttp3.Callback){
val client=OkHttpClient()
val request=Request.Builder()
.url(address)
.build()
client.newCall(request).enqueue(callback)
}
}