Programming/Android2011.01.09 14:53
리스트뷰를 이용하여 구현하였고 리스트뷰의 한 항목을 눌렀을때 그 항목에만 해당되는 Context Menu를 넣을 수 있다.


    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
    	super.onCreateContextMenu(menu, view, menuInfo);
    	new MenuInflater(this).inflate(R.menu.context_mylibrary, menu);
    }
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
    	super.onCreateContextMenu(menu, view, menuInfo);
    	new MenuInflater(this).inflate(R.menu.context_mylibrary, menu);
    }

어떤 도서관을 클릭해도 이와 같은 Context Menu가 나온다... 하지만 제대로 된 항목을 클릭한 것 일까?
아니면 실수나 오류로 인해서 위 또는 아래의 항목이 클릭된 것 일까?
이건 메뉴중 하나를 선택하지 않으면 정확히 알 수 없는 문제이다... 
이런 문제를 해결하기 위해서 Title을 넣어 보려고 한다.
    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
    	super.onCreateContextMenu(menu, view, menuInfo);

    	AdapterContextMenuInfo info = (AdapterContextMenuInfo)menuInfo;
    	ListView lv = (ListView) findViewById(R.id.LVLibrary);
    	Library library = (Library) lv.getAdapter().getItem(info.position);
    	
    	new MenuInflater(this).inflate(R.menu.context_mylibrary, menu);
    	menu.setHeaderTitle(library.getName());
    }
info.position 을 통해 몇번째 항목인지 가져온다.
리스트뷰에서 Adapter를 얻어서 해당하는 항목의 객체를 얻어올 수 있다.
이제 타이틀로 넣을 값을 얻었으니 이제 설정만 해주면 끝이다.

표시될 메뉴 객체 menu의 setHeaderTitle 메소드를 호출하여 원하는 정보를 설정해 준다.


이게 결과를 실행한 화면이다.
타이틀이 나와서 그런지 어떤 항목을 선택했는지 확실히 알 수 있다.
Posted by 초프 초프(초보 프로그래머)

댓글을 달아 주세요

  1. 초보개발자자

    안녕하세요 좋은 소스 보고 가는데요~ Library library 이 부분있잖아요 Library 에 어떤값을 넣어주어야 하는건가요??

    2011.05.13 04:12 [ ADDR : EDIT/ DEL : REPLY ]
    • 객체로 목록을 표시할때를 예를 든거에요.
      저 목록에 보여지는 내용이 Library의 값에 따라 바뀌어야 하지요.
      그 정보를 가지고 있는 객체입니다.
      임의로 만드시면 됩니다.

      2011.05.13 22:51 신고 [ ADDR : EDIT/ DEL ]
  2. 초보개발자자

    죄송한데 전체소스좀 멜로 보내주실수 있으세요? 아무리 해봐도 안되서요 ㅠㅠ binggo0126@naver.com
    보내주시면 정말 감사히 참고하겠습니다 ㅠ

    2011.06.01 02:22 [ ADDR : EDIT/ DEL : REPLY ]