[Android / Kotlin] 강좌2 - custom list 만들기
어댑터 패키지 생성
1public class CategoryAdapter: BaseAdapter() {23}
그 안에 categorAdapter 클래스를 생성후 baseAdapter를 상속받아준다.
base 어댑터는 커스텀 리스트 어댑터를 만들때 상속받아 사용한다.
1package sorisoft.co.kr.shoppingmall.Adapters23import android.content.Context4import android.view.LayoutInflater5import android.view.View6import android.view.ViewGroup7import android.widget.BaseAdapter8import android.widget.ImageView9import android.widget.TextView10import sorisoft.co.kr.shoppingmall.Model.Category11import sorisoft.co.kr.shoppingmall.R1213/**14 * Created by harry on 2017. 9. 28..15 */161718/* adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1,DataService.categories)에서19 * Adapter가 CategoryAdapter로 this와 DataService.categories를 맵핑하여준다*/2021class CategoryAdapter(context: Context, categories: List<Category>) : BaseAdapter(){2223 val context = context24 val categories = categories2526 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {27 val categoryView: View2829 //xml레이아웃을 맵핑하여 주는 코드30 categoryView = LayoutInflater.from(context).inflate(R.layout.category_list_item, null)3132 //이름과 맵핑하여주기33 val categoryImage : ImageView = categoryView.findViewById(R.id.categoryImage) //전편에 만들었던 category_list.item.xml의 이미지 id를 categoryImage로 변경할 것34 val categoryName: TextView = categoryView.findViewById(R.id.categoryName)3536 //데이터를 가져온 후37 val category = categories[position]3839 //데이터 연결시켜주기40 categoryName.text = category.title41 val resourceId = context.resources.getIdentifier(category.image, "drawble", context.packageName) //각각 파일명, 파일이 있는 위치, 파일이 소속된 패키지명을 받아 구분자를 리턴함(리소스 네임)42 categoryImage.setImageResource(resourceId) //이미지 맵핑4344 return categoryView45 }4647 override fun getItem(position: Int): Any {48 //카테고리를 리턴49 return categories[position]50 }5152 override fun getItemId(position: Int): Long {53 //사용하지 않을것임 유니크 id를 받아 처리하는 메서드54 return 055 }5657 override fun getCount(): Int {58 //전체 개수 반환 ios에서의 numberOfSection59 return categories.count()60 }6162}
이제 커스텀 리스트를 만들었으니 실제 mainactivity와 연동하여준다.
1class MainActivity : AppCompatActivity() {23 lateinit var adapter: ArrayAdapter<Category>45 // 생략6 adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1,DataService.categories)7
위 부분을
1class MainActivity : AppCompatActivity() {23 lateinit var adapter: CategoryAdapter45 //생략67 adapter = CategoryAdapter(this,DataService.categories)8
우리가 만든 CategoryAdapter로 바꾸어준다.
1<ListView2 android:id="@+id/categoryListView"3 <-- 생략 -->45 추가되는 부분 -->6 android:divier="@null"7 />
위 코드를 추가하여 divier를 없애주자