dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 네트워크
  • 머신러닝
  • 딥러닝
  • python #백준
  • 코드리뷰
  • 자료구조
  • 포너블
  • 자바
  • kotlin
  • 인공지능
  • Guacamole
  • cs
  • 데이터베이스
  • 클라우드
  • db
  • java
  • 침입탐지
  • CTF
  • gcp
  • 웹해킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

Kotlin 리스트뷰 어댑터 사용하기
Android/Kotlin

Kotlin 리스트뷰 어댑터 사용하기

2021. 2. 15. 16:51
728x90

리스트뷰를 사용하기 위해서는 어댑터 클래스를 선언해주어야한다.

또한 리스트뷰에 들어갈 레이아웃 xml도 생성해준 뒤 이를 연결시켜야한다.

.

kotlin으로 찾아보면 리스트뷰보다도 리사이클러뷰가 많았는데

Realm과 관련된 정보가 많지 않아 리스트뷰를 택했고, 리스트뷰로 충분히

원하는 것을 구현가능하다고 생각했다. 

 

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import com.example.whisperapp.todo.Todo
import io.realm.OrderedRealmCollection
import io.realm.RealmBaseAdapter

class ListAdapter(realmResult: OrderedRealmCollection<Todo>)
    : RealmBaseAdapter<>(realmResult){//RealmBaseAdapter 상속

    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
        val vh: ViewHolder
        val view: View

        if(convertView==null){
            //xml 레이아웃 파일을 불러와서 뷰로 전환시킴
            view= LayoutInflater.from(parent?.context).inflate(R.layout.item,parent, false)
            vh=ViewHolder(view)
            view.tag=vh
        }else{
            view=convertView
            vh=view.tag as ViewHolder
            //view.tag는 Any형이므로 ViewHolder 타입으로 형변환
        }
        if(adapterData!=null){
            val item=adapterData!![position]
            vh.textTextView.text=item.title
            vh.subTextView.text=item.subtitle
            vh.dateTextView.text = android.text.format.DateFormat.format("yyyy/MM/dd", item.date)
        }
        return view
    }

    override fun getItemId(position: Int): Long {
        if (adapterData!= null) {
            return adapterData!![position].id
            // adapterView가 Realm 데이터를 가지고 있으므로
            // 해당 위치의 id를 반환해줘야 함
        }
        return super.getItemId(position)
    }
}
class ViewHolder(view: View) {
    val dateTextView: TextView = view.findViewById(R.id.text1)
    val textTextView: TextView = view.findViewById(R.id.text2)
    val subTextView: TextView = view.findViewById(R.id.text3)
}

 

리스트뷰를 나타내는 액티비티에 아래 코드를 추가해주어야한다.

 

 val adapter = TodoListAdapter(realmResult)  // 할 일 목록이 담긴 어댑터 생성
        listView.adapter = adapter    // 어댑터 지정 (이 때 목록이 출력됨)
728x90

'Android > Kotlin' 카테고리의 다른 글

Kotlin Realm DB 사용시 발생한 오류 해결하기  (0) 2021.02.03
SQLite에서의 데이터 베이스 구축  (0) 2021.01.28
Kotlin 실로폰 만들기  (0) 2021.01.25
Kotlin 수평측정기 만들기  (0) 2021.01.22
Kotlin 나만의 웹브라우저 만들기  (0) 2021.01.22
    'Android/Kotlin' 카테고리의 다른 글
    • Kotlin Realm DB 사용시 발생한 오류 해결하기
    • SQLite에서의 데이터 베이스 구축
    • Kotlin 실로폰 만들기
    • Kotlin 수평측정기 만들기
    dalgorithm
    dalgorithm

    티스토리툴바