[안드로이드/AdapterView] AdapterView의 개념과 ListView, GridView

2022. 9. 13. 23:03· Android
목차
  1. 💡 AdapterView
반응형

💡 AdapterView

  • 버튼이나 텍스트뷰 같이 그 자체로 사용이 가능한 뷰가 아닌 개발자가 view 를 구성하는 데이터를 정해줘야 구현이 가능
  • 해당 데이터 정보를 Adapter Class 에 담아 사용
  • 어댑터 클래스 객체 (데이터와 데이터를 어떻게 보여줄지 xml 을 담음) & 어댑터 뷰 (어댑터 객체를 셋팅 해줌)

 

Adapter Class

  • 어댑터뷰에 달아줄 어댑터 객체를 생성
  • 어떤 데이터를 보여줄 것인지 / 어떻게 데이터를 보여줄 것인지 등의 정보를 파라미터로 설정

    - 첫번째 파라미터 : context

    - 두번째 파라미터 : item 을 어떻게 보여줄지 구성한 layout id

    - 세번째 파라미터 : 보여줄 데이터

        val adapter1 = ArrayAdapter(this, android.R.layout.simple_list_item_1, data1)
        mainBinding.listview1.adapter = adapter1 //어댑터뷰(리스트뷰)에 어댑터 세팅

 

ListView

  • 데이터를 list 방식으로 연속적으로 보여줄 수 있는 adapterview 의 한 종류
  • 메모리 사용에 효율적이지만 구현이 까다로운 Recyclerview 비해 구현이 간단해 간단한 아직도 많이 사용

ListView 주요 이벤트

  • OnitemClickListener : listview의 항목을 터치했을 때 리스너 메소드를 상속 받아 구현
    • onItemClick메소드를 반드시 오버라이딩                                
class MainActivity : AppCompatActivity() {

    lateinit val mainBinding : MainActivityBinding;

    val data1 = arrayof("문자열1","문자열2","문자열3","문자열4","문자열5") //리스트뷰에 넣을 데이터
    
    override fun onCreate(savedInstanceState : Bundle?) {
    	super.onCreate(savedInstanceState)
        mainBinding = ActivityMainBinding.inflate(layoutInflater);
        setContentView(mainBinding.root)
        
        // 어댑터 객체 생성
        val adapter1 = ArrayAdapter(this, android.R.layout.simple_list_item_1, data1) // ArrayAdapter라는 Adapter 클래스
        mainBinding.listview1.adapter = adapter1 //어댑터 셋팅
        
        // 리스트뷰 item 클릭 리스너 설정
        mainBinding.listview1.setOnitemClickListener(ListitemClickListener1()) // 상속 받아 만든 클래스로 객체 만들어 사용
        
        /*
        // 익명클래스로 구현함과 동시에 리스너에 달아 사용
        mainBinding.listview1.setOnitemClickListener(object : AdapterView.OnitemClickListener{
        	override fun onitemClick(parent:Adapter<*>?, view:View?, position:Int, id:Long){
            		when(parent?.id){
            			R.id.list1 -> { // 아이템 클릭시 수행할 동작 }
            		}
               	}})
        */
        
        /*
        // 익명클래스로 구현하고 객체를 생성해 그 객체를 리스너에 달아 사용
        mainBinding.listview1.setOnitemClickListener(listener1)
        
        val listener1 = object : AdapterView.OnitemClickListener{
        	override fun onitemClick(parent:Adapter<*>?, view:View?, position:Int, id:Long){
            		when(parent?.id){
            			R.id.list1 -> { // 아이템 클릭시 수행할 동작 }
                    	}
            	}
        }
        */
        
      }
        
        // AdapterView의 OnitemClickListener를 상속받아 inner 클래스를 만들어 사용
        inner class ListitemClickListener1 : AdapterView.OnitemClickListener{
        	override fun onitemClick(parent:Adapter<*>?, view:View?, position:Int, id:Long) {
        
        	// 첫번째 : 이벤트가 발생한 항목을 가지고 있는 adapterview
        	// 두번째 : 이벤트가 발생한 항목 view
        	// 세번째 : 이벤트가 발생한 항목의 index
        		when(parent?.id){
            			R.id.list1 -> { // 아이템 클릭시 수행할 동작 }
            		}
       	 	}
         }
        
  
}

 

GridView

  • Grid 형태의 ListView 와 거의 동일한 기능 + 추가된 기능을 갖음 

GridView 주요 속성

  • numColumns : 그리드로 구성할 칸의 개수, auto_fit 으로 설정시 디바이스에 맞게 자동 구성

GridView 주요 이벤트

  • onItemClick : 그리드뷰의 항목을 선택했을 때 동작/기능
binding.grid1.setOnItemClickListener(listener1)
} //onCreate() 끝

val listener1 = object : AdapterView.OnItemClickListener{
        override fun onItemClick(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
            when (p0?.id) {
                R.id.grid1 -> {
                    binding.textView.text = "${data1[p2]} 항목을 클릭"
                }
            }
        }
    }
// 리스너를 상속받아 오버라이딩할 메소드가 하나밖에 없을 경우 고차함수로 작성 가능
binding.grid1.setOnItemClickListener { adapterView, view, i, l ->
	binding.textView.text = "${data1[i]} 항목을 클릭"
}

 

반응형

'Android' 카테고리의 다른 글

[안드로이드/Style] 색상 지정  (0) 2022.09.15
[안드로이드/AdapterView] Custom ListView  (0) 2022.09.14
[안드로이드/Layout] Layout의 개념/종류  (0) 2022.09.06
[안드로이드/View] View Binding  (0) 2022.09.06
[안드로이드/View] View의 개념  (0) 2022.09.03
  1. 💡 AdapterView
'Android' 카테고리의 다른 글
  • [안드로이드/Style] 색상 지정
  • [안드로이드/AdapterView] Custom ListView
  • [안드로이드/Layout] Layout의 개념/종류
  • [안드로이드/View] View Binding
gangmini
gangmini
gangmini
게으른J 의 테크로그
gangmini
전체
오늘
어제
글쓰기방명록관리자
  • 분류 전체보기 (127)
    • 인공지능(AI) & 데이터 분석 (5)
    • Android (91)
      • Coroutine (3)
      • Compose (0)
      • 안드로이드 CS (0)
    • Kotlin (3)
    • Data Structure (0)
    • 알고리즘 (20)
      • 알고리즘 이론 (11)
      • 백준(BOJ) 문제 풀이 (9)
    • Build Tool (2)
    • Git (2)
    • 일본어 (0)
    • 기타(취준, 활동) (0)


인기 글



최근 댓글



최근 글

hELLO · Designed By 정상우.v4.2.2
gangmini
[안드로이드/AdapterView] AdapterView의 개념과 ListView, GridView
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.