6

나는 ListFragment과 간단한 ArrayAdapter이 연관되어 있습니다. 리스트 뷰는 체크 할 항목의 목록을 보유하고 있으며 다음의 XML 레이아웃은 다음과 같습니다ListFragment에 대한 다중 선택 컨텍스트 동작 표시 줄 (문제 있음)

<ListView android:id="@id/android:list" 
       android:layout_width="match_parent" 
       android:layout_height="0dip" 
       android:layout_weight="1" 
       android:layout_marginLeft="2mm" 
       android:layout_marginRight="2mm" 
       android:drawSelectorOnTop="false" 
       android:longClickable="true" 
       android:choiceMode="multipleChoiceModal"/> 

당신이 볼 수 있듯이, 나는 XML 레이아웃에서 long-clickablechoicemode 속성을 설정했습니다.

은 내가 ListFragmentonViewCreated 콜백에서 적절한 청취자를 설정합니다

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    ListView list_view = getListView(); 
    list_view.setMultiChoiceModeListener(this); 
    list_view.setOnItemLongClickListener(this); 
} 

ListFragment는 그 청취자의 콜백을 구현하고 있기 때문에 리스너 매개 변수로 this 전달합니다. onItemLongClick가 호출되지 않습니다 것을, 첫째

@Override 
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id 
{ 
    activity.startActionMode(this); 
    return true; 
} 

:

내가 문제를 데 콜백입니다. 그러나 목록 항목을 길게 클릭하면 컨텍스트 별 작업 표시 줄 (CAB)이 시작되고 완벽하게 작동합니다!

실제로이 CAB는 이 콜백없이 시작됩니다. 내 콜백은 activity.startActionMode(this)을 사용하는데 CAB가 표시되지만 목록의 항목을 쉽게 확인할 수는 없습니다 (필자는 다른 곳에서도이 테스트를 실시했습니다).

어떻게 CAB을 시작하고 목록 항목을 쉽게 확인할 수 있도록 긴 클릭을 프로그래밍 방식으로 처리합니까?

나는 주제에 제시된 방법을 사용하고 있습니다 (onLongClickListener는 사용하지 않았지만 사용하지 않았습니다). 작동하지 않는 것 같습니다.

답변

1

난 당신이 하나를 알아 낸 추측하지만, 후손을 위해, 당신이 컨텍스트 메뉴를 추가 할 필요하면 루트 활동/조각 아래 onContextMenuCreated의 상황에 맞는 메뉴 항목을 추가하는 것입니다 해요 :

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, 
    ContextMenuInfo menuInfo) { 
    if (v.getId()==R.id.list) { 
    String[] menuItems = getResources().getStringArray(R.array.menu); 
    for (int i = 0; i<menuItems.length; i++) { 
     menu.add(Menu.NONE, i, i, menuItems[i]); 
    } 
    } 
} 

그런 다음 onContextMenuCreated 아래의 상황에 맞는 메뉴 클릭에 응답하십시오. 자세한 내용은 여기를 참조하십시오.

http://www.mikeplate.com/2010/01/21/show-a-context-menu-for-long-clicks-in-an-android-listview/