這連續三天的補充篇 我想合起來做一個簡單的APP 做一個相簿的APP實作
今天我們先來寫GridView 之前沒寫是因為搞不懂 現在寫了是覺得很麻煩 Kotlin 有些東西不像JAVA一樣可以直接取用(adapter)所以花了很大的看了影片之後 從新實作
https://www.youtube.com/watch?v=bmHFiLWH4yk
我們先做好介面的設計 就直接放一個GridView
每一個格子內的東西都重新設計過 所以在做一個XML放入我們自己設計的樣子 裡面有圖片與文字
然後增加兩個class (customerlayout.kt/custom_adapter.kt)
首先實作customerlayout.kt
因為我們沒有要對圖片或文字做動作 這部分就可以先省下來 只定義好兩個參數
先放上程式碼以免講不完
package com.example.likunlin.album
import android.app.Activity
import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ImageView
import android.widget.TextView
import java.security.AccessControlContext
class custom_adapter(private val getContext:Context,private val CustomLayoutId:Int,private val custom_item:ArrayList):ArrayAdapter(getContext,CustomLayoutId,custom_item) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var row = convertView
val Holder : ViewHolder
if(row == null) {
val inflater = (getContext as Activity).layoutInflater
row = inflater!!.inflate(CustomLayoutId, parent, false)
Holder = ViewHolder()
Holder.img = row!!.findViewById(R.id.img) as ImageView
Holder.txt = row!!.findViewById(R.id.txt) as TextView
row.setTag(Holder)
}else{
Holder = row.getTag() as ViewHolder
}
val item = custom_item[position]
Holder.img!!.setImageResource(item.image)
Holder.txt!!.setText(item.text)
return row
}
class ViewHolder{
internal var img : ImageView? = null
internal var txt : TextView? = null
}
}
之後在主程序上完成實作
我看android JAVA版的可以直接用adapter就可以完成一個簡易版adapter 若想客製化就在自己來即可 沒想到Kotlin 好像就只能客製化 我想明天會更麻煩 除了讀取本機程序之外 還會面對到圖檔太大的問題 這可真是一大挑戰