컨텍스트뷰는 길게 터치했을때 나오는 메뉴이다.
텍스트뷰와 리스트뷰에 간단하게 붙여본다.
간..단..하..게..ㅠㅜ 어렵다.
몇일 공부는 안해봤지만, 주워다 쓰는 느낌이 강하고, 모르면 아예 못하는 것들이 많다.
자바를 모르는 나에게 역주행은 힘들다.
그냥... 일단은 외워보자.
// 텍스트뷰와 리스트뷰에 컨텍스트 메뉴 붙이기 실습 from Udemy 강좌
class MainActivity : AppCompatActivity() {
// 리스트에 붙일 데이터 var data = arrayOf("data1","data2","data3","data4","data5","data6","data7")
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)
// 텍스트뷰에 기본으로 들어갈 텍스트 textView.text = "main page Text"
// 리스트뷰 아답터 var adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1, data) listView.adapter = adapter
// 리스트뷰 클릭 리스너 // 리스트항목을 클릭하면 항목의 position값을 텍스트뷰에 나오게 한다 listView.setOnItemClickListener { parent, view, position, id -> textView.text = "${position +1 } 번째 항목 터치" }
// 컨텍스트 메뉴 등록(텍스트뷰와 리스트뷰) registerForContextMenu(textView) registerForContextMenu(listView) }
// 컨텍스트 메뉴의 구성 onCreateContextMenu override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) { super.onCreateContextMenu(menu, v, menuInfo)
// 넘어오는 뷰의 아이디값으로 분기하여, 어떤 컨텍스트 메뉴를 붙일지 정해준다. when(v?.id) { // 텍스트뷰일 경우 R.id.textView -> { // 메뉴의 소제목 menu?.setHeaderTitle("textContextMenu") // 미리 만들어놓은 컨텍스트 메뉴를 호출 menuInflater.inflate(R.menu.ctx_menu1_item1, menu) } // 리스트뷰일 경우, 항목별로 다른 메뉴가 나타나게 할 예정 R.id.listView -> { // 리스트에서 몇번째 항목인지 확인할 수 있는 값을 찾는다 var info = menuInfo as AdapterView.AdapterContextMenuInfo // 짝수번재 항목이면 menu3번을 호출 if(info.position % 2 ==0) { menu?.setHeaderTitle("listContextMenu2") menuInflater.inflate(R.menu.menu3, menu) } // 그렇지 않으면 menu2번을 호출 else{ menu?.setHeaderTitle("listContextMenu") menuInflater.inflate(R.menu.ctx_menu2, menu) } } } }
// 컨텍스트 메뉴를 눌렀을때 발생하는 이벤트 처리 override fun onContextItemSelected(item: MenuItem?): Boolean { // 클릭된 메뉴 아이템이 넘어온다. 아이템아이디 값으로 분기하여 처리 when(item?.itemId){ R.id.item1 -> textView.text = "context menu item 1" R.id.item2 -> textView.text = "it is context menu item2" R.id.item3 -> textView.text = "list context menu item3" R.id.item4 -> textView.text = "list context menu item4" R.id.item5 -> textView.text = "list context menu item5" }
// 기본 리턴값은 그대로 return super.onContextItemSelected(item) }}
'Dead Code > DEPRECATED-KOTLIN' 카테고리의 다른 글
[코틀린코드연습장] NOTIFICATION.... 삽질 (0) | 2018.11.02 |
---|---|
[코틀린코드연습장] 기본 다이얼로그 (0) | 2018.10.18 |
[코틀린코드연습장] 커스텀 토스트 (0) | 2018.10.16 |
[코틀린코드연습장] 예전부터 궁금했던, 토스트 띄우기 (0) | 2018.10.02 |
[코틀린코드연습장] Options Menu 활성화하기 (0) | 2018.09.29 |
[코틀린코드연습장] ListView * CustomAdapter (0) | 2018.09.06 |
[코틀린코드연습장] ListView - adapter (0) | 2018.02.04 |
[코틀린코드연습장] ImageView (0) | 2018.02.04 |
[코틀린코드연습장] seekBar (0) | 2018.02.03 |
[코틀린코드연습장] progressBar (0) | 2018.02.03 |