kotlin實作簡單的listview案例
-
- 前言
- 代碼部分
- 效果圖
前言
今天老師留下了一個listview的小案例,嘗試使用kotlin實作
代碼部分
xml代碼
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:background="@drawable/bg_environment">
<LinearLayout
android:layout_width="1600px"
android:layout_height="800px"
android:layout_alignParentBottom="true"
android:layout_marginLeft="150px"
android:layout_marginBottom="50px">
<ImageView
android:layout_width="40px"
android:layout_height="160px"
android:scaleType="centerCrop"
android:src="@drawable/btn_inventory_select"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_frame_descend_setting"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100px"
android:padding="20px">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="訂單号:"
android:textColor="#ffffff"
android:textSize="16sp"/>
<EditText
android:layout_width="150px"
android:layout_height="match_parent"
android:layout_marginLeft="10px"
android:background="@drawable/input"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="起始時間:"
android:textColor="#ffffff"
android:textSize="16sp"
android:layout_marginLeft="10px"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="2015-08-01"
android:textColor="#ffffff"
android:layout_marginLeft="10px"
android:background="@drawable/input"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="結束時間:"
android:textColor="#ffffff"
android:textSize="16sp"
android:layout_marginLeft="10px"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="2015-08-14"
android:textColor="#ffffff"
android:layout_marginLeft="10px"
android:background="@drawable/input"/>
<Button
android:layout_marginLeft="50px"
android:layout_width="250px"
android:layout_height="match_parent"
android:background="@drawable/btn_page_hover"
android:textColor="#ffffff"
android:textSize="24px"
android:text="搜尋"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100px">
<TextView
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="訂單号"
android:textSize="24sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:layout_width="0px"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="金額"
android:textSize="24sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:layout_width="0px"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="狀态"
android:textSize="24sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="添加時間"
android:textSize="24sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="操作"
android:textSize="24sp"
android:gravity="center"
android:textColor="#ffffff"/>
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
listview子項布局
<?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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100px">
<TextView
android:id="@+id/orderNumber"
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="訂單号"
android:textSize="16sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/money"
android:layout_width="0px"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="金額"
android:textSize="16sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/state"
android:layout_width="0px"
android:layout_weight="1"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="狀态"
android:textSize="16sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/time"
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="添加時間"
android:textSize="16sp"
android:gravity="center"
android:textColor="#ffffff"/>
<TextView
android:id="@+id/handle"
android:layout_width="0px"
android:layout_weight="3"
android:layout_height="match_parent"
android:background="@drawable/input"
android:text="操作"
android:textSize="16sp"
android:gravity="center"
android:textColor="#ffffff"/>
</LinearLayout>
</LinearLayout>
實體類代碼
class Commodity(val OrderNumber:String,val money:String,val state:String,val time:String) {
}
擴充卡
package com.example.yyr2_6
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
/**
*@建立者: yuyiran
*@建立日期: 2020-5-24 11:04
*@描述: 擴充卡
*/
class MyAdapter(var context: Context,var datas:ArrayList<Commodity>) :BaseAdapter(){
inner class MyHolder(){
lateinit var OrderNumber : TextView
lateinit var money : TextView
lateinit var state : TextView
lateinit var time : TextView
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var view:View ?= null
var myHolder:MyHolder ?= null
if(convertView == null){
myHolder = MyHolder()
view = LayoutInflater.from(context).inflate(R.layout.list_view,null)
myHolder.OrderNumber = view.findViewById(R.id.orderNumber)
myHolder.money = view.findViewById(R.id.money)
myHolder.state = view.findViewById(R.id.state)
myHolder.time = view.findViewById(R.id.time)
view.tag = myHolder
}else{
view = convertView
myHolder = view.tag as MyHolder
}
myHolder.OrderNumber.text = datas.get(position).OrderNumber
myHolder.money.text = datas.get(position).money
myHolder.state.text = datas.get(position).state
myHolder.time.text = datas.get(position).time
return view!!
}
override fun getItem(position: Int): Any {
//擷取指定位置(position)上的item對象,通常不需要修改
return datas.get(position)
}
override fun getItemId(position: Int): Long {
// 擷取指定位置(position)上的item的id,通常不需要修改
return position.toLong()
}
override fun getCount(): Int {
//傳回一個整數,就是要在listview中現實的資料的條數
return datas.size
}
}
MainActivity
package com.example.yyr2_6
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
var list:ArrayList<Commodity> ?= ArrayList()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.hide()
initCommodity()
listview.adapter = MyAdapter(this,list!!)
}
private fun initCommodity(){
for (i in 1..100 step 1){
val OrderNumber = "2015${DecideNumber(1,12)}" +
"${DecideNumber(1,30)}" +
"${DecideNumber(0,23)}" +
"${DecideNumber(0,59)}"
val Money = (1..500).random().toString()
val states = "已安裝"
val time = "2015-${OrderNumber.substring(4,6)}" +
"-${OrderNumber.substring(6,8)}" +
" ${OrderNumber.substring(8,10)}" +
":${OrderNumber.substring(10,12)}"
list?.add(Commodity(OrderNumber,Money,states.toString(),time))
}
}
private fun DecideNumber(lenghtstart:Int,lenghtend:Int):String{//生成随機數
var Number = (lenghtstart..lenghtend).random().toString()
if(Number.length == 1){
return "0${Number}"
}else {
return Number
}
}
}
效果圖
使用kotlin實作簡單的listview案例
