(Kotlin) Poi를 사용하여 엑셀 데이터 가져오기(2)
- 안드로이드 개발/Kotlin으로 어플 만들기
- 2019. 8. 7. 21:05
지난 포스팅에서는,
1)엑셀 파일을 불러와서 2)배열에 저장한 후 3)RecyclerView에 뿌려줄 계획 중 1), 2)까지 했습니다.
2019/08/06 - [안드로이드 개발/Kotlin으로 어플 만들기] - (Kotlin) Poi를 사용하여 엑셀 데이터 가져오기(1)
오늘은 배열을 RecyclerView에 뿌려주는 것까지 해 보겠습니다.
이 포스팅을 보기전에 반드시 이전에 연속되는 두개의 포스팅을 먼저 봐주세요.
여기까지 잘 따라왔다면 굉.장.히 간단합니다!
1. Kotlin (SearchActivity.kt)
2019/08/04 - [안드로이드 개발/Kotlin으로 어플 만들기] - (Kotlin) RecyclerView 사용하기
위 포스팅에서 쓴 코드,
//adapter 추가
search_recyclerview.adapter = SearchAdapter()
//레이아웃 매니저 추가
search_recyclerview.layoutManager = LinearLayoutManager(this)
기억나시나요?
이전에는 이 코드를 onCreate안에 만들었는데,
엑셀과 연동하기 위해서 readExcelFileFromAssets안으로 옮겨주겠습니다.
private fun readExcelFileFromAssets() {
try {
val myInput: InputStream
// assetManager 초기 설정
val assetManager = assets
// 엑셀 시트 열기
myInput = assetManager.open("oxquiz.xls")
// POI File System 객체 만들기
val myFileSystem = POIFSFileSystem(myInput)
//워크 북
val myWorkBook = HSSFWorkbook(myFileSystem)
// 워크북에서 시트 가져오기
val sheet = myWorkBook.getSheetAt(0)
//행을 반복할 변수 만들어주기
val rowIter = sheet.rowIterator()
//행 넘버 변수 만들기
var rowno = 0
//MutableList 생성
var items: MutableList<SearchData> = mutableListOf()
//행 반복문
while (rowIter.hasNext()) {
val myRow = rowIter.next() as HSSFRow
if (rowno != 0) {
//열을 반복할 변수 만들어주기
val cellIter = myRow.cellIterator()
//열 넘버 변수 만들기
var colno = 0
var fullname = ""
var quiz = ""
//열 반복문
while (cellIter.hasNext()) {
val myCell = cellIter.next() as HSSFCell
if (colno === 1) {//2번째 열이라면,
fullname = myCell.toString()
} else if (colno === 2) {//3번째 열이라면,
quiz = myCell.toString()
}
colno++
}
//4,8번째 열을 Mutablelist에 추가
items.add(SearchData(fullname, quiz))
}
rowno++
}
Log.e("checking", " items: " + items)
//adapter 추가
search_recyclerview.adapter = SearchAdapter(items)
//레이아웃 매니저 추가
search_recyclerview.layoutManager = LinearLayoutManager(this)
} catch (e: Exception) {
Toast.makeText(this, "에러 발생", Toast.LENGTH_LONG).show()
}
}
catch의 윗 줄에 넣어주시면 됩니다.
또 한가지 바뀐 점은,
search_recyclerview.adapter = SearchAdapter()에서
search_recyclerview.adapter = SearchAdapter(items) 입니다.
items라는 mutablelist를 어댑터로 넘겨줄거에요.
2. Kotlin (SearchAdapter.kt)
여기서는 이전에 만든 부분부터 딱 두가지만 바꿔주면 끝이납니다.
1)
class SearchAdapter : RecyclerView.Adapter<SearchAdapter.SearchViewHolder>()에서
class SearchAdapter(get_excel: MutableList<SearchData>) : RecyclerView.Adapter<SearchAdapter.SearchViewHolder>()로 바꿔줍니다.
2)
var items: MutableList<SearchData> = mutableListOf( SearchData("제목1", "퀴즈1"), SearchData("제목2", "퀴즈2"), SearchData("제목3", "퀴즈3") ) 에서
var items: MutableList<SearchData> = get_excel으로 바꿔줍니다.
결과물은!!!
간단하게 엑셀을 RecyclerView로 뿌려줄 수 있습니다.
디자인은 xml에서,
추가적인 기능 구현은 kotlin에서 조금씩 바꿔가시면 훌륭한 Recyclerview를 만들 수 있을겁니다!
아마 다음 포스팅에서는 RecyclerView의 OnclickListener 사용법을 다루지 않을까 싶습니다.
끝.
'안드로이드 개발 > Kotlin으로 어플 만들기' 카테고리의 다른 글
(Kotlin) SearchView를 이용한 RecyclerView filter 사용하기 (2) | 2019.08.11 |
---|---|
(Kotlin) RecyclerView, OnclickListener 사용하기 (3) | 2019.08.10 |
(Kotlin) Poi를 사용하여 엑셀 데이터 가져오기(1) (5) | 2019.08.06 |
(Kotlin) RecyclerView 사용하기 (2) | 2019.08.04 |
(Kotlin) Button 온클릭리스너로 Intent 이동 (0) | 2019.07.28 |