2012-06-15 2 views
0

내 Android 애플리케이션에는 onCLickListener를 구현하는 List에서 행을 관리하기위한 맞춤 ArrayAdapter가 있습니다.Android : Custom ArrayAdapter showContextMenu onClick

onClick() 메소드에서 컨텍스트 메뉴를 표시하려고합니다.

 public class MyAdapter extends ArrayAdapter<MyClass> implements 
                   OnClickListener { 

    public void onClick(View v) { 

      v.showContextMenu(); 
    } 
} 

내 주요 List Activity 클래스에서 다른 Activity를 시작하는 onLongListItemClick() 메서드를 재정의합니다.

목록에서 한 행을 클릭하면 컨텍스트 메뉴가 올바르게 표시되지만 나중에 두 번째 onLongListItemClick()도 실행됩니다. 어떻게 이런 일을 막을 수 있을까요?

감사합니다.

+0

취소 할 수 없습니까? 상황에 맞는 메뉴를 길게 클릭하고 (평소와 같이) 정기적으로 클릭하여 새로운 활동을 시작합니다. – Barak

+0

이 경우에는 사용자가 원래 세부 정보를 수정하고 저장할 수있는 편집 화면을 열려면 긴 클릭이 필요합니다. 목록의 각 요소 옆에 확인란이 있습니다. 그래서 사용자가 체크 상자를 클릭하면 '삭제'와 '편집 옵션'을 제공하기 위해 컨텍스트 메뉴를 가져 오려고합니다 – user1459121

+0

내가 이해할 수없는 이유는 컨텍스트 메뉴의 일부가 될 수 없습니까? 나는 메뉴에서 선택을 의미합니다 ... 아니면 단지 편집 할 메뉴 항목을 선택해야하는 추가 클릭을 제거하고 싶습니까? – Barak

답변

0

의견을 보내 주시면 해결할 수 있다고 생각합니다. 상황에 맞는 메뉴에 행 onClick을 사용하지 말고 어댑터에 클릭 수신기를 설정하여 확인란을 선택하고 컨텍스트 메뉴를 표시하십시오. 그렇게하면 onLongListItemClick을 피할 수 있습니다.

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) { 
     if(isChecked){ 
      View v = buttonView.getParent(); // get the parent row view containing the checkbox 
      v.showContextMenu();  // show the context menu 
     } 
    } 
} 
:이 트릭을 할해야

android:focusable="false" 
android:focusableInTouchMode="false" 

편집 :

체크 박스 클릭 행 모두, 당신의 XML의 체크 박스 정의에이 추가 확인하려면

+0

클릭 수신기 방식은 어떻게 생겼습니까? – user1459121

+0

답변을 업데이트했습니다. – Barak