package com.seafile.seadroid2.fileschooser; import java.util.List; import com.seafile.seadroid2.R; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.util.Log; import android.view.View; import android.widget.ListView; public class FileListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<List<SelectableFile>> { private static final String LOG_TAG = "FileListFragment"; private static final int LOADER_ID = 0; private FileListAdapter mFileListAdapter; private String mPath; public static FileListFragment newInstance(String path) { FileListFragment fragment = new FileListFragment(); Bundle args = new Bundle(); args.putString(MultiFileChooserActivity.PATH, path); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(LOG_TAG, "onCreate"); mFileListAdapter = new FileListAdapter(getActivity()); mPath = getArguments() != null ? getArguments().getString( MultiFileChooserActivity.PATH) : Environment .getExternalStorageDirectory().getAbsolutePath(); } @Override public void onActivityCreated(Bundle savedInstanceState) { setEmptyText(getString(R.string.empty_folder)); setListAdapter(mFileListAdapter); setListShown(false); getLoaderManager().initLoader(LOADER_ID, null, this); super.onActivityCreated(savedInstanceState); } @Override public void onListItemClick(ListView l, View v, int position, long id) { FileListAdapter adapter = (FileListAdapter) l.getAdapter(); if (adapter != null) { SelectableFile file = adapter.getItem(position); mPath = file.getAbsolutePath(); file.toggleSelected(); if (file.isFile()) { FileListAdapter.Viewholder viewHolder = (FileListAdapter.Viewholder)v.getTag(); viewHolder.checkBox.setChecked(file.isSelected()); } ((MultiFileChooserActivity) getActivity()).onFileChecked(file); } } @Override public void onPause () { Log.d(LOG_TAG, "onPause"); super.onPause(); } @Override public Loader<List<SelectableFile>> onCreateLoader(int id, Bundle args) { return new FileLoader(getActivity(), mPath, ((MultiFileChooserActivity) getActivity()).getSelectedFiles()); } @Override public void onLoadFinished(Loader<List<SelectableFile>> loader, List<SelectableFile> data) { mFileListAdapter.setListItems(data); if (isResumed()) setListShown(true); else setListShownNoAnimation(true); } @Override public void onLoaderReset(Loader<List<SelectableFile>> loader) { mFileListAdapter.clear(); } }