티스토리 뷰
이번 포스팅에서는 지난 포스팅에 이어 ListView item click 시 menu 가 나오게 하는 방법 중 popup menu 를 이용하는 방법에 대해 알아보자.

참고로, 지난 포스팅에서는 ListView 에 text + image 목록 출력, click 처리, menu 출력 하는 방법에 대해 알아 보았다.
[Android/UI] - ListView (2) - ListView 에 text 출력하기
[Android/UI] - ListView (3) - ListView 에 image 추가하기
[Android/UI] - ListView (4) - ListView item 의 click 처리하기
[Android/UI] - ListView (5) - ListView item click 시 context menu 출력하기
Menu XML resource file 추가
ListView item long click 시 나올 popup menu 를 XML 로 추가하자.
1. 하단 그림과 같이 res 폴더 안에 'menu' 라는 이름으로 폴더를 추가
2. 'main_list_menu.xml' 를 하단과 같이 생성
3. 1번에서 생성한 menu 폴더에 'main_list_menu.xml' 파일을 추가한다.

ListView item long click 시 popup menu 출력
새로 생성한 'main_list_menu.xml' 는 popup menu 생성 시 등록하자.
1. onItemLockClick 시 popup menu 생성 (xml inflate)
2. Popup menu click 시 click event 처리
3. Popup menu 보이기 (꼭 show 를 해야한다.)
public class PhMainActivity extends AppCompatActivity { | |
...... | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
bindList(); | |
} | |
private void bindList() { | |
...... | |
mCountryAdapter = new PhCountryArrayAdapter(this, mItemList); | |
ListView listView = (ListView) findViewById(R.id.listview); | |
listView.setAdapter(mCountryAdapter); | |
listView.setOnItemLongClickListener(new OnItemLongClickListener() { | |
@Override | |
public boolean onItemLongClick(AdapterView<?> a_parent, View a_view, final int a_position, long a_id) { | |
// Popup menu 생성 | |
PopupMenu popup = new PopupMenu(PhMainActivity.this, a_view); | |
getMenuInflater().inflate(R.menu.main_list_menu, popup.getMenu()); | |
// Popup menu click event 처리 | |
popup.setOnMenuItemClickListener(new OnMenuItemClickListener() { | |
@Override | |
public boolean onMenuItemClick(MenuItem a_item) { | |
final PhCountryItem item = (PhCountryItem) mCountryAdapter.getItem(a_position); | |
switch (a_item.getItemId()) { | |
case R.id.action_insert: | |
Toast.makeText(PhMainActivity.this, item.getCountry() + " " + getString(R.string.insert), Toast.LENGTH_SHORT).show(); | |
break; | |
case R.id.action_delete: | |
Toast.makeText(PhMainActivity.this, item.getCountry() + " " + getString(R.string.delete), Toast.LENGTH_SHORT).show(); | |
break; | |
case R.id.action_modify: | |
Toast.makeText(PhMainActivity.this, item.getCountry() + " " + getString(R.string.modify), Toast.LENGTH_SHORT).show(); | |
break; | |
case R.id.action_info: | |
Toast.makeText(PhMainActivity.this, item.getCountry() + " " + getString(R.string.info), Toast.LENGTH_SHORT).show(); | |
break; | |
default: | |
break; | |
} | |
return false; | |
} | |
}); | |
// Popup 보이기 | |
popup.show(); | |
return true; | |
} | |
}); | |
} | |
} |
Source code
https://github.com/parkho79/ListView_5
'Android > UI' 카테고리의 다른 글
ListView (8) - ListView 에 header, footer 달기 (0) | 2021.01.07 |
---|---|
ListView (7) - ListView item 추가, 수정, 삭제 (0) | 2020.12.24 |
ListView (5) - ListView item click 시 context menu 출력하기 (0) | 2020.12.17 |
ListView (4) - ListView item 의 click 처리하기 (0) | 2020.12.04 |
ListView (3) - ListView 에 image 추가하기 (0) | 2020.11.19 |
- Total
- Today
- Yesterday
- StringUtils
- android activity flag
- task
- mPANDO
- 안드로이드 인텐트
- 무료채굴
- RoomDatabase
- 리워드앱
- StartService
- 채굴앱
- android flag activity
- 무료 채굴
- p2e
- onContextItemSelected
- BroadcastReceiver
- M2E
- Intent
- WEMIX
- android intent
- onCreateContextMenu
- registerForContextMenu
- 리워드 어플
- bindservice
- task 생성
- Android Service
- notifyDataSetChanged
- android task
- 앱테크 추천
- 안드로이드 서비스
- 앱테크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |