Mam ListFragment
powiązane z prostym ArrayAdapter
. ListView posiada listę Rejestrowalne elementów XML i jego układ jest następujący:Jak poprawnie uruchomić pasek wyboru kontekstowego działania dla ListFragment (mając problemy)
<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"/>
Jak widać, mam ustawić long-clickable
i choicemode
atrybutów w układzie XML.
ustawić odpowiednie słuchaczy w ListFragment
„s onViewCreated
callback:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ListView list_view = getListView();
list_view.setMultiChoiceModeListener(this);
list_view.setOnItemLongClickListener(this);
}
mijam w this
jako parametr słuchacza bo moja ListFragment
wdrożył również wywołania zwrotne tych słuchaczy.
To jest zwrotna Mam problemy z:
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id
{
activity.startActionMode(this);
return true;
}
po pierwsze, że onItemLongClick
nigdy nie jest wywoływana. Ale pasek kontekstowej akcji (CAB) uruchamia się i działa idealnie, gdy element listy jest długo kliknięty!
W rzeczywistości, CAB inicjuje poprawnie bez tego oddzwonienia! Moje wywołanie zwrotne używa activity.startActionMode(this)
, które pokazuje CAB, ale nie ułatwia sprawdzania elementów na liście (testowałem to gdzie indziej).
Jak poprawnie zaprogramować obsługę długich kliknięć, aby zainicjować CAB i ułatwić sprawdzanie elementów listy?
Używam metod przedstawionych w tematach Android Developer Guide (użyli oniLongClickListener, które również starałem się bezskutecznie), ale wydaje się, że nie działa.