홍드로이드님 코틀린 앱 강의 (https://youtu.be/ao0Iqfhy0oo) 필기.
Constraint Widget 0/0/0/0
layout_width(height) match_parent -> 0dp로 변경
ListView는 어댑터를 사용해야 연결 가능(?)
val item = arrayOf("사과", "배", "포도", "키위", "바나나")
//context는 액티비티의 모든 정보를 담고있다.
listView.adapter = ArrayAdapter(context:this, android.R.layout.simple_list_item_1, item)
MainActivity 파일 밑에 User 새 코틀린 파일 만들어주기
// 클래스 모델 객체
class User (val profile:Int, val name:String, val age:String, val greet: String)
(list_item_user.xml)
ConstraintLayout 사이즈를 조정하여 1개 리스트의 사이즈 지정
match_parent -> wrap_content
MainActivity와 같은 폴더에 UserAdapter.kt 생성
// 첫줄 완성 후 Alt+Enter 클릭 후 BaseAdapter 전체 선택(Ctrl+A) 해서 implement.
class UserAdapter (val context: Context, val UserList: ArrayList<User>) : BaseAdapter()
{
ovverride fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
//뷰를 붙일때 LayoutInflater를 씀
val view: View = LayoutInflater.from(context),inflate(R.layout.list_item_user, null)
val profile = view.findViewById<ImageView>(R.id.iv_profile)
val name = view.findViewById<TextView>(R.id.tv_name)
val age = view.findViewById<TextView>(R.id.tv_age)
val greet = view.findViewById<TextView>(R.id.tv_greet)
val user = UserList[position]
profile.setImageResource(user.profile)
name.text = user.name
age.text = user.age
greet.text = user.greet
return view
}
override fun getItem(position: Int): Any {
// array list에 있는 위치들 만큼 get item 한다?
return UserList[position]
}
override fun getItemId(position: Int): Long{
return 0 // 사용안함
}
override fun getCount(): Int{
// getCount를 호출하면 아이템 갯수가 나옴
return UserList.size
}
}
리스트뷰에는 반드시 어댑터로 연결을 해 주어야 한다.
어댑터가 연결이 되었을때 getView가 호출되어 뷰를 만듬
MainActivity.kt
//클래스 선언 밑에 작성
var UserList = arrayListOf<User>(
// 콜론 앞은 자동완성됨
User(R.drawable.android, name:"아보카도", age:"28", greet: "안녕"),
User(R.drawable.android, name:"과자", age:"28", greet: "바삭"),
User(R.drawable.android, name:"과카몰리", age:"28", greet: "맛있어")
)
//onCreate 안에 작성
val Adapter = UserAdapter(context: this, UserList)
listView.adapter = Adapter
//listView 클릭이벤트 (OnItemClickListner 두번째꺼)
listView.onItemClickListner = AdapterView.OnItemClickListner { parent, view, position, id ->
// as User 로 모델 형태 선언해주기
val selectItem = parent.getItemAtPosition(position) as User
Toast.makeText(context:this, selectItem.name, Toast.LENGTH_SHORT).show()
}