我的问题是当我选择一个项目并且我释放该项目时未选择并且我第一次单击时没有选中元素。
代码:
public class SongsFragment extends SherlockListFragment implements
LoaderManager.LoaderCallbacks<Cursor>, OnItemLongClickListener {
...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
...
mMode = null;
mListView = getListView();
mListView.setItemsCanFocus(false);
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mListView.setOnItemLongClickListener(this);
}
...
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
Log.d(getClass().getSimpleName(), "longClick");
SparseBooleanArray checked = mListView.getCheckedItemPositions();
if(checked.size() == 0)
Log.d(getClass().getSimpleName(), "checked size 0");
boolean hasCheckedElement = false;
for (int i = 0; i < checked.size() && !hasCheckedElement; i++) {
Log.d(getClass().getSimpleName(), "For: " + Integer.toString(i));
hasCheckedElement = checked.valueAt(i);
}
if (hasCheckedElement) {
Log.d(getClass().getSimpleName(),"hasCheckedElement");
if (mMode == null) {
mMode = getSherlockActivity().startActionMode(
mActionModeCallback);
}
} else {
Log.d(getClass().getSimpleName(),"!!!hasCheckedElement");
if (mMode != null) {
mMode.finish();
}
}
return false;
}
...
}
例如:点击一个项目,释放,点击同一个项目。这是输出:
SongsFragment(16560): longClick
SongsFragment(16560): checked size 0
SongsFragment(16560): !!!hasCheckedElement
SongsFragment(16560): longClick
SongsFragment(16560): For: 0
SongsFragment(16560): hasCheckedElement
为什么第一次没有检查?为什么我发布时没有选择项目?谢谢。