CustomListView 코틀린 전환하기
CustomListView를 java에서 사용하는 방법
2020/10/27 - [대외 활동/CADI(개발A 보충스터디)] - CustomListView - 1(java)
CustomListView - java
CustomListView 구현 CustomListview는 아이템을 별도의 xml로 만들고 그것을 Listview에 적용시켜서 사용하는 것이다. 간단한 문장이나 하나의 아이템만 보여주는 Listview와 달리 아이템을 더 추가하여 리스
dev-seungwon.tistory.com
위의 코드에서 xml부분은 동일하다. 따라서 java->kt파일로 변환된 모습만 살펴보자.
동일하게 총 3개의 .kt파일을 만들고 기능은 java와 같다.

Adapter에서의 핵심은 findViewById()함수를 사용해 선언할 필요가 없다는 점과 java와 비교하여 보다 간결해진 코드이다.
ListViewAdpater.kt
class ListViewAdapter : BaseAdapter() {
private val listViewItemList : List<ListViewItem>()
override fun getCount(): Int {
return listViewItemList.size
}
override fun getItem(position: Int): Any {
return listViewItemList[position]
}
override fun getItemId(position: Int): Long
{
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
var convertView = convertView
val pos = position
val context = parent!!.context
if (convertView == null)
{
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
convertView = inflater.inflate(R.layout.listview_item, parent, false)
}
val listViewItem: User = listViewItemList[pos]
convertView!!.imageView1.setImageDrawable(listViewItem.icon)
convertView.tv_title.text = listViewItem.title
convertView.tv_desc.text = listViewItem.desc
return convertView
}
fun addItem(icon: Drawable?, title: String?, desc: String?) {
val item = ListViewItem() // 하나의 리스트 항목을 하나의 객체로 간주함
item.title
item.desc
item.icon
listViewItemList.add(item)
}
}
MainActivity와 ListViewItem부분도 코드가 간결해졌다.
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val listview: ListView
val adapter = ListViewAdapter()
listview = findViewById<View>(R.id.listView_Shape) as ListView
listview.adapter = adapter
// 첫 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.instagram), "instagram", "this is instagram")
// 두 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.youtube), "youtube", "this is youtube")
// 세 번째 아이템 추가.
adapter.addItem(ContextCompat.getDrawable(this, R.drawable.facebook), "facebook", "this is facebook")
listview.onItemClickListener =
OnItemClickListener { parent, v, position, id ->
val item: ListViewItem = parent.getItemAtPosition(position) as ListViewItem
Toast.makeText(applicationContext, item.title, Toast.LENGTH_LONG).show()
}
}
}
ListViewItem.kt
class ListViewItem() {
val icon: Drawable? =null
val title: String? =null
val desc: String?=null
}
실행결과 java버전과 똑같이 나온다.

'대외 활동 > CADI(개발A 보충스터디)' 카테고리의 다른 글
안드로이드 버전 카카오 T SDK 개발기 (0) | 2020.11.22 |
---|---|
DatePickerDialog/TimePickerDialog 알아보기 (0) | 2020.10.27 |
CustomListView-2 (ViewHolder사용하기) (0) | 2020.10.27 |
CustomListView - 1(java) (0) | 2020.10.27 |
빌더 패턴(Builder Pattern)이란 ? (0) | 2020.09.22 |