Ativar / desativar seleção de itens em listview no modo de múltipla escolha
Eu tenho um listview registrado para o menu de contexto no modo de múltipla escolha:
private void initListViewForContextMenu(){
log.d("FilesFragment", "initListViewForContextMenu()");
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiChoiceModeListener() { ...
O problema é que nem todos os itens da minha visão devem ser selecionáveis, apenas aqueles que mostram um ícone especial devem estar disponíveis para seleção. Eu não sei como implementar isso, eu defini umOnItemLongClickListener
:
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> adapter, View view, int position, long id) {
Log.d("FilesFragment", "OnItemLongClickListener.onItemLongClick at pos " + position);
PfmDocument doc = (PfmDocument)adapter.getItemAtPosition(position);
if (doc.isOnBasket()){
Log.d("FilesFragment", "OnItemLongClickListener.onItemLongClick detected in basket");
ListView lv = (ListView) adapter;
lv.setItemChecked(position, false);
}
return false;
}
});
mas esse ouvinte nunca é chamado.
Eu também tentei definir umOnLongClickListener
para a exibição de linha no adaptador, mas fazer esse clique normal também é desabilitado mesmo quando o menu de contexto é fechado (não no modo de seleção).
if (doc.isOnBasket()){
rowView.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false; // do nothing, already in basket
}
});
//}