2011-05-08 5 views
0

행을 길게 클릭하면 listview에서 선택된 행을 처리해야하지만 메뉴를 사용하고있어 onclicklistener를 무시할 수 없습니다. 나는 이것을 시도하고있다 :메뉴의 onlongclicklistener 처리

listView.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     taskPosition = listView.getSelectedItemPosition(); 
     return true; 
    } 
}); 

그러나 작동하지 않는다. 누구든지 나를 도울 수 있습니까?

+0

"작동하지 않는 것"보다 구체적 일 수 있습니까? – hammar

+0

좋아, listView.getSelectedItemPosition(); 값을 얻었다. 디버거에 의해 -1 같음 listview 선택 longclick 처리하고 onContextItemSelected 작업을 수행 할 필요가 귀하의 답변을 – khwileh

답변

2

나는 listView.getSelectedItemPosition()의 값을 얻었다. 가 같음 -1

물론입니다. 행은 일반적으로 선택되지 않습니다. 행은 사용자가 포인팅 장치 (D 패드, 트랙볼 등)를 사용하는 경우에만 선택됩니다.

은 내가 목록보기에서 선택 longclick를 처리하고

아니, 당신은하지 않는 행동을 수행 할 onContextItemSelected에서 사용합니다. 컨텍스트 메뉴 또는 중 하나를 사용하면 위젯과 함께 긴 클릭 리스너를 사용합니다. 둘 다 사용하지 마십시오.

onContextItemSelected()에서 길게 클릭 한 행을 확인하려는 경우 here is a sample project은 어댑터가 ArrayAdapter 인 경우이를 보여줍니다. CursorAdapter을 사용하는 경우 이것을 보여주는 here is a different sample project을 사용하십시오.

+0

고마워요,하지만 내 질문을 명확히하지 오전 생각, 그래서 그것을 안드로이드 2.2 명확하게 예제가 있습니다. 통화 기록 목록에서 길게 클릭하고 메뉴 팝업이 나타나면 통화 기록 목록에서 선택된 번호를 처리합니다. 그게 내가 원하는 것 같습니다. 목록보기의 선택을 저장하고 사용하는 방법입니다 그것의 메뉴에서 – khwileh

+0

@Hassan Khwieh : 제공된'ContextMenu.ContextMenuInfo' 객체에서'onCreateContextMenu()'에서 어떤 행을 길게 클릭했는지 알 수 있습니다. 역학은 내가 보여준 예제에서와 같지만, onContextItemSelected()까지이 객체를 보는 것을 지연합니다. – CommonsWare

+0

thats right many thanks – khwileh