2010-05-25 3 views
0

내 질문 : OnLongClickListener를 사용하기 전에 목록보기에 사용자 지정 어댑터가있을 때 "이 컨텍스트 메뉴를 만들 때 클릭 한 항목"정보를 전달하는 더 좋은 방법이 있습니까?내 목록보기에 사용자 지정 어댑터가있는 경우 MenuItem.AdapterContextMenuInfo가 null입니까?

public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 

을 다음에 가서 행복 :

일반적으로, 내 코드는 단지 같은 것을 할 수 있습니다

는 여기에 몇 가지 세부 사항입니다.

그러나 사용자 정의 어댑터를 도입 한 이후로 item.getMenuInfo()는 null입니다. 내 코드가 클릭 한 항목을 더 이상 알지 못하기 때문에 큰 문제입니다. (내 사용자 지정 어댑터는 각 목록 행을 확인란과 텍스트보기로 만듭니다)

시도했지만 실패 : 내 고유 한 AdapterContextMenuInfo ("HasAViewMenuInfo"라고도 함)를 만들었지 만이 메서드에서 전달하면 끝납니다 나는 당신의 문제가 있음을 의심

public void onCreateContextMenu(ContextMenu menu, View v, 
     ContextMenuInfo menuInfo) 
{ 
    super.onCreateContextMenu(menu, v, new HasAViewMenuInfo(v)); 

답변

1

메뉴에 널 (null) 인 :

내 사용자 정의 어댑터는 각 목록 행 체크 박스와 텍스트 뷰를 만드는

일시적으로 확인란을 제거하십시오. 상황 별 메뉴가 작동하면 확인란이 문제가됩니다. 대신 CheckedTextView으로 전환하는 것이 좋습니다. 어쨌든 ListView에서 훨씬 더 잘 지원됩니다 (예 : CHOICE_MODE_MULTIPLE, setItemChecked() 사용).

맞춤 어댑터와 함께 상황에 맞는 메뉴를 사용했지만 문제가 없습니다. 그러나 나는 내 행에 체크 박스를 사용하지 않았다.

관련 문제