ContextMenu를 사용하려고합니다.
SimpleCursorAdapter를 사용하여 간단한 ListActivity에 대해이 작업을 성공적으로 수행했습니다. I에 이동
는 CursorAdapter와 SimpleCursorAdapter를 대체 여전히의 ContextMenu 동작을 유지하려면, 그래서 두 개의 필수 재정의 기능을 추가 한의 Bindview와 newViewonCreateContextMenu가 ContextMenuInfo에 대한 null 값으로 호출됩니다.
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = mLayoutInflater.inflate(R.layout.check_row, parent, false);
registerForContextMenu(view);
return view;
}
참고 registerForContextMenu 대체 registerForContextMenu (위에서 getListView을()) ListActivity의 onCreate 메소드에서. onCreateContextMenu (...)에 대한 호출을 얻기 위해 필요한 것을 찾았습니다.
이 모든 것이 작동합니다 (예상 위젯으로 작성된 행, 작업 콜백 등). onCreateContextMenu (...)에 제공된 ContextMenuInfo 매개 변수가 이제 null 인 경우를 제외하고는 모든 것이 rowId에 액세스하는 것을 막습니다.
수행 할 또 다른 트릭이 있습니까? 아마도 CursorAdapter의 bindView (...) 메소드에서?
onCreate()에 registerForContextMenu()를 넣고 싶지만 그렇게하면 긴 클릭에 응답하지 않는 목록 항목이 생기므로 onCreateContextMenu()에 대한 호출이 없으므로 컨텍스트 메뉴가 없습니다. 레지스터 newView()를 호출하면 onCreateContextMenu()에 대한 콜백이 발생하지만 ContextMenuInfo 매개 변수는 null입니다. 그러나 newView()와 onCreate()에서 레지스터를 사용하는 것은 onCreateContextMenu()가 ContextMenuInfo에서 유효한 항목과 함께 호출 될 때까지 작동합니다. 나는 이것이 '맞다'라고 생각하지 않는다. 더 좋은 방법이 있어야만 하는가? –
"onCreate()에 registerForContextMenu()를 넣고 싶지만 그렇게하면 긴 클릭에 응답하지 않는 목록 항목이 생기므로 onCreateContextMenu()에 대한 호출이 없으므로 컨텍스트 메뉴가 없습니다." ListView 및 registerForContextMenu() 샘플은 http://github.com/commonsguy/cw-android/tree/master/Database/Constants/에서 확인하십시오. 고마워요. – CommonsWare
. 이 샘플을 가져 와서 내 문제보다는 내 자신의 코드에서 다시 만들려고했습니다. CheckBox와 ContextMenus를 더 이상 사용할 수 없도록 row.xml을 수정하십시오. CheckBox를 처리하는 데 로직이 필요하지 않습니다. 행 끝에 다음을 추가하십시오.XML 는 <선택란 로이드 : layout_below = "@ 아이디/값" 로이드 : layout_width = "wrap_content는" 로이드 : layout_height = "wrap_content" 로이드 : layout_toLeftOf = "이드 = 로이드"@ + ID/확인 " @ + id/value " /> –