@Override public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; TextView folder = null; CheckBox check = null; if (row == null) { LayoutInflater inflater = LayoutInflater.from(context); row = inflater.inflate(R.layout.folder_adapter_row, parent, false); folder = (TextView) row.findViewById(R.id.folder); folder.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View folder) { int position = (Integer) folder.getTag(); // FolderAdapter.this.clear(); directory.browseTo(position); currentChecked = -1; FolderAdapter.this.notifyDataSetChanged(); doneButton.setEnabled(false); } }); check = (CheckBox) row.findViewById(R.id.checkbox); check.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // update last checked position int position = (Integer) buttonView.getTag(); if (isChecked) currentChecked = position; else if (currentChecked == position) currentChecked = -1; FolderAdapter.this.notifyDataSetChanged(); if (isChecked) doneButton.setEnabled(true); } }); } folder = (TextView) row.findViewById(R.id.folder); folder.setText(directory.get(position)); folder.setTag(new Integer(position)); check = (CheckBox) row.findViewById(R.id.checkbox); // disable the "Up one level" checkbox; otherwise make sure its enabled if (position == 0 && !directory.isCurrentDirectoryRoot()) check.setEnabled(false); else check.setEnabled(true); check.setTag(new Integer(position)); // set check state. only one can be checked boolean status = (currentChecked == position) ? true : false; check.setChecked(status); return (row); }
void createSDcardFolderSelector() { wizard.removePagesAfter(1); // add folder listview to wizard wizard.addPage(R.layout.wizard_folder_pick_list); // enable nav buttons on that page wizard.setNavButtonStateOnPage(1, true, PageFlipView.LAST_PAGE); wizard.setDoneButtonOnClickListener(new FinishWizardButtonListener()); // setup directory browser directory = new DirectoryBrowser.LocalDirectoryBrowser(this); // setup directory browser adapter directoryAdapter = new FolderAdapter(this, R.layout.folder_adapter_row, directory.list()); directoryAdapter.setDoneButton((Button) findViewById(R.id.wizard_done_button)); // bind adapter to browser directoryAdapter.setDirectoryBrowser(directory); // bind adapter to listview folderList = (ListView) wizard.findViewById(R.id.wizard_folder_list); folderList.setAdapter(directoryAdapter); directoryAdapter.notifyDataSetChanged(); }
void createDropboxList() { wizard.addPage(R.layout.wizard_folder_pick_list); wizard.enablePage(1); // enable nav buttons on that page wizard.setNavButtonStateOnPage(2, true, PageFlipView.LAST_PAGE); wizard.setDoneButtonOnClickListener(new FinishWizardButtonListener()); // setup directory browser directory = new DirectoryBrowser.DropboxDirectoryBrowser(this, dropbox); // setup directory browser adapter directoryAdapter = new FolderAdapter(this, R.layout.folder_adapter_row, directory.list()); directoryAdapter.setDoneButton((Button) findViewById(R.id.wizard_done_button)); // bind adapter to browser directoryAdapter.setDirectoryBrowser(directory); // bind adapter to listview folderList = (ListView) wizard.findViewById(R.id.wizard_folder_list); folderList.setAdapter(directoryAdapter); directoryAdapter.notifyDataSetChanged(); // debug // TODO Technically, this should be an async task app may crash // when list of root items is very long and network connection // is slow }
public String getCheckedDirectory() { if (currentChecked == -1) return ""; // (Toast.makeText(context, directory.getAbsolutePath(currentChecked), // Toast.LENGTH_LONG)).show(); return directory.getAbsolutePath(currentChecked); }