Kotlin

코틀린 안드로이드 RecyclerView GridLayout 사용하기

Machine_웅 2019. 2. 9. 16:14
728x90
반응형

< xml >

 


<android.support.v7.widget.RecyclerView
android:id="@+id/contentList_RecyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/line2"
android:layout_below="@+id/line1end"
android:layout_marginLeft="5dp"
android:layout_marginTop="0dp"
android:layout_marginRight="5dp"
android:columnWidth="120dp"
android:gravity="center"
android:horizontalSpacing="5dp"
android:numColumns="auto_fit"
android:verticalSpacing="5dp">


</android.support.v7.widget.RecyclerView>

 

android:columnWidth="120dp" 아이템의 가로 길이


android:numColumns="auto_fit" 크기에 맞게 배치

 

 

 

그리드 뷰처럼 사용하기 위해서 화면에 들어갈 수 있는 아이탬의 갯수를 먼져 구해야 한다.

한 줄에 들어갈 수 있는 아이템의 수를 구하기 위해,  화면의 크기 / 아이템의 크기 를 계산해서, GridLayoutManager 에 대입이 필요하다.

 

// 화면 크기 구하기
val wm = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager //윈도우 메니져
val display = wm.defaultDisplay

val point = Point()
display.getSize(point)
val screenWidth = point.x // 화면의 가로 길이 구하기
val photoWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120f, this.resources.displayMetrics).toInt()
val columnsCount = screenWidth / photoWidth // 화면에 들어갈수 있는 갯수

// 어댑터 세팅.
try {
var contentList_Adapter = contentList_Adapter(contentList, this) // 어댑터
contentList_RecyclerView = findViewById(R.id.contentList_RecyclerView)
contentList_RecyclerView.layoutManager = GridLayoutManager(this, columnsCount)
contentList_RecyclerView.adapter = contentList_Adapter
contentList_RecyclerView.adapter.notifyDataSetChanged()
contentList_RecyclerView.scrollToPosition(contentList.size - 1)
} catch (e: Exception) {
Log.d("예외발생 ", e.toString())
}

 

 

어댑터는  RecyclerView 어댑터와 동일 하다.

728x90
반응형