我的问题是,当我选择一个项目并且我发布的项目未被选中时,我第一次单击那里没有选中的元素。
代码:
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
为什么第一次没有检查? 为什么我发布时没有选择该项目? 感谢。
答案 0 :(得分:0)
我找到了这个教程(西班牙文):http://androcode.es/2012/03/seleccion-individualmultiple-de-elementos-en-un-listview/ 现在一切正常。