Android 프로그래밍 2

본문 바로가기
사이트 내 전체검색


Android 프로그래밍 2
Android 프로그래밍 2

10. Context Menu (4) - 리스트뷰

페이지 정보

작성자 관리자 댓글 0건 조회 1,848회 작성일 22-01-29 00:08

본문

10. Context Menu (4) - 리스트뷰

리스트뷰에 Context Menu를 추가해보겠습니다.


1. 프로젝트 선택


ContextMenuTest 를 사용하여 수정하겠습니다.



2. activity_main.xml 수정


<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="텍스트 뷰"
app:layout_constraintBottom_toTopOf="@id/listView1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/textView1"
/>

</androidx.constraintlayout.widget.ConstraintLayout>


3. MainActivity.kt


package kr.co.leelab.contextmenutest

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ContextMenu
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.*

class MainActivity : AppCompatActivity() {

private lateinit var textView1 : TextView
private lateinit var listView1 : ListView
var dataArr = arrayOf("사과", "복숭아", "오렌지", "자두", "")

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

textView1 = findViewById(R.id.textView1)
listView1 = findViewById(R.id.listView1)

var simpleListAdapter = ArrayAdapter(this,android.R.layout.simple_list_item_1 , dataArr)
listView1.adapter = simpleListAdapter
listView1.setOnItemClickListener { parent, view, position, id ->
textView1.text = dataArr[position]
}

registerForContextMenu(listView1)
}
override fun onCreateContextMenu(
menu: ContextMenu?,
v: View?,
menuInfo: ContextMenu.ContextMenuInfo?
) {
super.onCreateContextMenu(menu, v, menuInfo)
when(v?.id) {
R.id.listView1 -> {
menu?.setHeaderTitle("ListView의 선택")
menuInflater.inflate(R.menu.menu_item, menu)
//코드로 메뉴 추가
var menuInfo = menuInfo as AdapterView.AdapterContextMenuInfo
if(menuInfo.position %2 == 0) {
menu?.add(Menu.NONE, Menu.FIRST + 100, Menu.NONE, "menu4")
}
}
}
}

override fun onContextItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.item1 -> {
textView1.text = "menu1\n"
var menuInfo = item?.menuInfo as AdapterView.AdapterContextMenuInfo
textView1.append("${menuInfo.position} 번째 메뉴 클릭됨")
Toast.makeText(this, "item1 선택" , Toast.LENGTH_SHORT).show()
}
R.id.item2 -> {
textView1.text = "menu2"
Toast.makeText(this, "item2 선택" , Toast.LENGTH_SHORT).show()
}
R.id.item3 -> {
textView1.text = "menu3"
Toast.makeText(this, "item2 선택" , Toast.LENGTH_SHORT).show()
}
}
return super.onContextItemSelected(item)
}
}


4. 실행





3.PNG


댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.