AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="xry10Application"
android:supportsRtl="true"
android:theme="@style/Theme.Xry10Application"
android:networkSecurityConfig="@xml/network_config"
tools:targetApi="31">
<activity android:name=".xryActivity1"
android:exported="false"/>
<activity android:name=".xryActivity2"
android:exported="false"/>
<activity android:name=".xryActivity3"
android:exported="false"/>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
创建network_config.xml文件:(允许传输数据)
<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
<base-config cleartextTrafficPermitted="ture">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
添加依赖:
implementation 'com.squareup.okhttp3:okhttp:4.1.0'
学生类:
class student (var id :Int,var name:String,var dept:String,var age:Int,var phone:String)
stuAdapter:
class StuAdapter(var resourceId:Int,var stulist:ArrayList<student>,var context: Context):
BaseAdapter() {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
var v: View = LayoutInflater.from(context).inflate(R.layout.item, null)
val model: student = stulist[position]
val name: TextView = v.findViewById(R.id.studentname)
val id: TextView = v.findViewById(R.id.studentid)
val dept: TextView = v.findViewById(R.id.studentcollege)
name.text = model.name
id.text = model.id.toString()
dept.text = model.dept
return v
}
override fun getCount(): Int {
return stulist.size
}
override fun getItem(position: Int): student? {
return stulist[position]
}
override fun getItemId(position: Int): Long {
return 0
}
}
插入活动:
class xryActivity1 :AppCompatActivity(){
lateinit var name:String
lateinit var dept:String
lateinit var age:String
lateinit var phone:String
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_xry1)
val insert:Button = findViewById(R.id.insert)
val editText2 :EditText = findViewById(R.id.editTextname)
val editText3 :EditText = findViewById(R.id.editTextdept)
val editText4 :EditText = findViewById(R.id.editTextage)
val editText5 :EditText = findViewById(R.id.editTextphone)
insert.setOnClickListener {
name = editText2.text.toString()
dept = editText3.text.toString()
age = editText4.text.toString()
phone = editText5.text.toString()
sendRequestWithHttpURLConnection()
}
}
private fun sendRequestWithHttpURLConnection() {
thread {
try {
val client = OkHttpClient()
val requestBody = FormBody.Builder()
.add("name",name)
.add("dept",dept)
.add("age", age)
.add("phone",phone)
.build()
val request = Request.Builder()
.url("http://2452x7g449.wicp.vip:9998/Service1.asmx/insertStudent")
.post(requestBody)
.build()
val response = client.newCall(request).execute()
val responseData = response.body?.string()
if(responseData != null){
showResponse(responseData)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun showResponse(reponse:String){
runOnUiThread {
val intent = Intent(this,MainActivity::class.java,)
startActivity(intent)
}
}
}
另一种写法:
lateinit var name : String
lateinit var dept : String
lateinit var age : String
lateinit var phone : String
private val activityZyladdBinding: ActivityZyladdBinding by lazy {
DataBindingUtil.setContentView(this,R.layout.activity_zyladd)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_zyladd)
activityZyladdBinding.charu.setOnClickListener{
name = activityZyladdBinding.xingming.text.toString()
dept = activityZyladdBinding.xueyuan.text.toString()
age = activityZyladdBinding.nianling.text.toString()
phone = activityZyladdBinding.dianhua.text.toString()
sendRequestWithOkHttp()
}
}
插入页面:
<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"
android:orientation="vertical"
android:layout_gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "添加学生记录"
android:textSize="30sp"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学院:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextdept"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextphone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"
tools:ignore="SpeakableTextPresentCheck"
/>
</LinearLayout>
<Button
android:id="@+id/insert"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "插入"
android:layout_gravity="center"
/>
</LinearLayout>
查询活动:
class xryActivity2:AppCompatActivity(), AdapterView.OnItemClickListener {
var list=ArrayList<student>()
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recycleview)
sendRequestWithHttpURLConnection()
}
private fun sendRequestWithHttpURLConnection() {
thread {
try {
val requestBody = FormBody.Builder()
.build()
val client = OkHttpClient()
val request = Request.Builder()
.url("http://2452x7g449.wicp.vip:9998/Service1.asmx/QueryStudents")
.post(requestBody)
.build()
val response = client.newCall(request).execute()
val responseData = response.body?.string()
if (responseData != null) {
for(stu in parseXMLWithPull(responseData)){
list.add(stu)
}
val handler = Handler(Looper.getMainLooper())
handler.post{
val listview:ListView = findViewById(R.id.listView)
val adapter = StuAdapter(R.layout.item, list,this)
listview.adapter = adapter
listview.setOnItemClickListener(this)
}
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun parseXMLWithPull(xmlDate:String): List<student> {
val factory = SAXParserFactory.newInstance()
val xmlReader = factory.newSAXParser().xmlReader
val handler = xryHandler()
xmlReader.contentHandler = handler
xmlReader.parse(InputSource(StringReader(xmlDate)))
return handler.getstudent()
}
override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
val stus = list[position]
val intent = Intent(this,xryActivity3::class.java)
intent.putExtra("stu_id",stus.id.toString())
intent.putExtra("stu_name",stus.name.toString())
intent.putExtra("stu_dept",stus.dept.toString())
intent.putExtra("stu_age",stus.age.toString())
intent.putExtra("stu_phone",stus.phone.toString())
startActivity(intent)
}
}
查询页面:
<?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="match_parent">
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
activity_item:
<?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="80dp"
android:orientation="vertical">
<TextView
android:id="@+id/studentname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20sp"
android:paddingTop="5sp"
android:text = "name"
android:textSize="30sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="30dp">
<TextView
android:id="@+id/studentid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20sp"
android:text="id"
android:textSize="23sp"
/>
<TextView
android:id="@+id/studentcollege"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="180sp"
android:paddingRight="20sp"
android:textSize="23sp"
android:text="学院"/>
</LinearLayout>
</LinearLayout>
修改删除活动:
class xryActivity3 :AppCompatActivity() {
lateinit var id:String
lateinit var name:String
lateinit var dept:String
lateinit var age:String
lateinit var phone:String
@SuppressLint("MissingInflatedId")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_xry3)
val editText2:EditText = findViewById(R.id.editTextname)
val editText3:EditText = findViewById(R.id.editTextdept)
val editText4:EditText = findViewById(R.id.editTextage)
val editText5:EditText = findViewById(R.id.editTextphone)
val textView: TextView =findViewById(R.id.textViewid)
textView.text=intent.getStringExtra("stu_id").toString()
editText2.setText(intent.getStringExtra("stu_name").toString())
editText3.setText(intent.getStringExtra("stu_dept").toString())
editText4.setText(intent.getStringExtra("stu_age").toString())
editText5.setText(intent.getStringExtra("stu_phone").toString())
val button1: Button = findViewById(R.id.button01)
button1.setOnClickListener {
id = textView.text.toString()
name = editText2.text.toString()
dept = editText3.text.toString()
age = editText4.text.toString()
phone = editText5.text.toString()
sendRequestWithOkHttp1()
}
val button2: Button = findViewById(R.id.button02)
button2.setOnClickListener {
id = textView.text.toString()
sendRequestWithOkHttp2()
}
}
private fun sendRequestWithOkHttp1() {
thread {
try {
val requestBody = FormBody.Builder()
.add("id",id)
.add("name",name)
.add("dept",dept)
.add("age",age)
.add("phone",phone)
.build()
val client = OkHttpClient()
val request = Request.Builder()
// 指定访问的服务器地址是计算机本机
.url("http://2452x7g449.wicp.vip:9998/Service1.asmx/updateStudent")
.post(requestBody)
.build()
val response = client.newCall(request).execute()
val responseData = response.body?.string()
if (responseData != null) {
showResponse(responseData)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun sendRequestWithOkHttp2() {
thread {
try {
val requestBody = FormBody.Builder()
.add("id",id)
.build()
val client = OkHttpClient()
val request = Request.Builder()
.url("http://2452x7g449.wicp.vip:9998/Service1.asmx/deleteStudent")
.post(requestBody)
.build()
val response = client.newCall(request).execute()
val responseData = response.body?.string()
if (responseData != null) {
showResponse(responseData)
}
} catch (e: Exception) {
e.printStackTrace()
}
}
}
private fun showResponse(response: String) {
runOnUiThread {
val intent= Intent(this,xryActivity2::class.java)
startActivity(intent)
}
}
}
删除修改界面:
<?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="vertical"
android:layout_gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "编辑学生记录"
android:textSize="30sp"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学号:"
android:textSize="20sp"/>
<TextView
android:id="@+id/textViewid"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:text="40"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextname"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="学院:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextdept"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="年龄:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="电话:"
android:textSize="20sp"/>
<EditText
android:id="@+id/editTextphone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:textSize="20sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical">
<Button
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text = "修改"
android:layout_gravity="center"
/>
<Button
android:id="@+id/button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="60dp"
android:text = "删除"
android:layout_gravity="center"
/>
</LinearLayout>
</LinearLayout>
Handler活动:
class xryHandler :DefaultHandler(){
val student = mutableListOf<student>()
var currentElement:String? = null
var currentStudent:student? = null
override fun startElement(uri: String?, localName: String?, qName: String?, attributes: Attributes?) {
currentElement = qName
if (qName == "Table") {
currentStudent = student(1,"11","11",11,"11")
}
}
override fun endElement(uri: String?, localName: String?, qName: String?) {
if (qName == "Table") {
currentStudent?.let { student.add(it) }
currentStudent = null
}
currentElement = null
}
override fun characters(ch: CharArray?, start: Int, length: Int) {
super.characters(ch, start, length)
val value = String(ch!!,start,length).trim()
when(currentElement){
"id" -> currentStudent?.id = value.toIntOrNull()!!
"name" -> currentStudent?.name = value
"dept" -> currentStudent?.dept = value
"age" -> currentStudent?.age = value.toIntOrNull()!!
"phone" -> currentStudent?.phone = value
}
}
fun getstudent(): List<student> {
return student
}
}