あなたの質問は非常に抽象的ですので、具体的な回答はできません。
ただし、いくつかのガイダンスと例を提供できます。
環境設定を動的に追加し (EditTextPreference を CheckboxPreference に置き換えます)、その前にファイルのリストを取得する例:
SettingsActivity (PreferenceActivity を拡張)
private void setHomeDirectoryPreference(String home_dir)
{
final EditTextPreference etp = new EditTextPreference(this);
etp.setKey("home_directory");
etp.setTitle("Home directory");
//...
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
((PreferenceScreen) findPreference("initial_preference")).addPreference(etp);
}
ファイルのサブファイルの一覧表示:
file.listFiles();
また、基になるファイルが存在するかどうかを頻繁に確認する必要がある場合があります。
f.exists();
クリックしたら、PreferenceScreen にサブディレクトリをロードする必要があります
個人的には、PreferenceDialog と ListView を使用してそれを行います。
DialogPreference の例:
public class HiddenFilesDialogPreference extends DialogPreference {
public static Context ctx;
public HiddenFilesDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
this.ctx = context;
}
@Override
protected View onCreateDialogView() {
LayoutInflater inflater = ((Activity) ctx).getLayoutInflater();
View vw = inflater.inflate(R.layout.content_view, null);
ListView lv = (ListView) vw.findViewById(android.R.id.list);
File[] hidden_files = HiddenFileHandler.getAllHiddenFilesAsFiles();
HiddenFilesListAdapter adapter = new HiddenFilesListAdapter(ctx, hidden_files);
lv.setAdapter(adapter);
return vw;
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
persistBoolean(positiveResult);
}
@Override
public void onClick (DialogInterface dialog, int which)
{
super.onClick(dialog, which);
Log.v("which", Integer.toString(which));
if(which == -1) { //Clear all
HiddenFileHandler hfh = new HiddenFileHandler(ctx);
hfh.clearHiddenFiles();
}
}
}
次に、ダイアログで onClickListeners() を設定して、ダイアログの内容などを置き換えることができます。
具体的な実装から始めて、より具体的な質問に戻ります。