[Android-Kotlin] ListView 클릭이벤트 추가하기
😬 안드로이드 ListView 클릭이벤트 추가하기 🏭👩🏭👨🏭
Activity안에 ListView가 있다.
헌데 ListView에 들어올 리스트는 유동적으로 표현하고싶다면
Adapter를 달아주면된다.
Class 부분
import java.io.Serializable;
class CostCenter (
var CostCenter: String,
var CalendarType: String,
var CostCenterName: String,
var WorkType: String,
var MeasureUnit: String
) : Serializable
Adapter 부분
class ListViewAdapter (val context: Context, val list: ArrayList<CostCenter>) : BaseAdapter() {
//xml 파일의 View와 데이터를 연결하는 핵심 역할을 하는 메소드이다.
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
/* LayoutInflater는 item을 Adapter에서 사용할 View로 부풀려주는(inflate) 역할을 한다. */
val view: View = LayoutInflater.from(context).inflate(R.layout.recycler_view_item, null)
... //로직구성
//클릭 이벤트 추가
view.setOnClickListener(View.OnClickListener { v -> //해당 리스트 클릭시 이벤트
val intent = Intent(v.context, MenuResultDetailActivity::class.java);
intent.putExtra("ClickObject",list.get(position));
//putExtra로 객체를 전달할경우 해당 객체가
//Serializable (직렬화) 로 전달해야한다.
v.context.startActivity(intent);
})
return view
}
//ListView에 속한 item의 전체 수를 반환한다.
override fun getCount(): Int {
return list.size
}
//해당 위치의 item을 메소드이다.
// Int 형식으로 된 position을 파라미터로 갖는다.
// 예를 들어 1번째 board item을 선택하고 싶으면 코드에서 getItem(0)과 같이 쓸 수 있을 것이다.
override fun getItem(position: Int): Any {
return list[position];
}
//해당 위치의 item id를 반환하는 메소드이다.
// 이 예제에서는 실질적으로 id가 필요하지 않아서 0을 반환하도록 설정했다.
override fun getItemId(position: Int): Long {
return 0
}
}
Activity 이동 후
var list = intent.getSerializableExtra("ClickObject") as CostCenter;
... //로직 구현
list.CostCenter.toString();
Note: 만들고나니 내것이 아니었다.
Leave a comment