package org.openintents.filemanager.lists; import java.util.ArrayList; import org.openintents.filemanager.R; import org.openintents.filemanager.files.FileHolder; import org.openintents.filemanager.util.MenuUtils; import org.openintents.filemanager.view.LegacyActionContainer; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.Toast; /** * Dedicated file list fragment, used for multiple selection on platforms older than Honeycomb. * OnDestroy sets RESULT_OK on the parent activity so that callers refresh their lists if appropriate. * @author George Venios */ public class MultiselectListFragment extends FileListFragment { private LegacyActionContainer mLegacyActionContainer; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.filelist_legacy_multiselect, null); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); super.onViewCreated(view, savedInstanceState); mAdapter.setItemLayout(R.layout.item_filelist_multiselect); // Init members mLegacyActionContainer = (LegacyActionContainer) view.findViewById(R.id.action_container); mLegacyActionContainer.setMenuResource(R.menu.multiselect); mLegacyActionContainer.setOnActionSelectedListener(new LegacyActionContainer.OnActionSelectedListener() { @Override public void actionSelected(MenuItem item) { if(getListView().getCheckItemIds().length == 0){ Toast.makeText(getActivity(), R.string.no_selection, Toast.LENGTH_SHORT).show(); return; } ArrayList<FileHolder> fItems = new ArrayList<>(); for(long i : getListView().getCheckItemIds()){ fItems.add((FileHolder) mAdapter.getItem((int) i)); } MenuUtils.handleMultipleSelectionAction(MultiselectListFragment.this, item, fItems, getActivity()); } }); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.options_multiselect, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { ListView list = getListView(); switch(item.getItemId()){ case R.id.check_all: for(int i = 0; i < mAdapter.getCount(); i++){ list.setItemChecked(i, true); } return true; case R.id.uncheck_all: for(int i = 0; i < mAdapter.getCount(); i++){ list.setItemChecked(i, false); } return true; default: return false; } } }