2013-02-27 7 views
0

API를받는 파일 및 폴더의 디렉토리 목록을 표시해야합니다. 사용자가 디렉토리 중 하나를 클릭하면 하위 디렉토리를 찾고 상위 디렉토리 바로 아래에 나열하여 계속 진행합니다. 가장 좋은 방법은 무엇입니까?PreferenceFragment에 checkBoxPreference를 동적으로 추가하십시오.

설정보기를 만들고 "디렉토리"설정을했습니다. 일단 그것을 클릭하면 PreferenceScreen에서 하위 디렉토리를로드해야합니다. 그리고 사용자는 서브 디렉토리를 드릴 다운하여 원하는 디렉토리를 선택할 수 있어야합니다. checkboxPreference

그래서 결국 체크 된 디렉토리의 목록을 만들 수 있습니다.

내 아이디어

  1. 표시 폴더는 폴더에 사용자가 클릭하면, 그래서보기에 하위 폴더를 밀어합니다.
  2. 폴더 표시, 사용자가 폴더를 클릭하면 상위 폴더 바로 아래에 하위 폴더를 표시하고 하위 폴더를 오른쪽으로 조금씩 이동합니다.
  3. checkBoxPreferences으로 선정되었습니다 폴더를 표시하고 사용자가 내가 어떻게 구현 될 수 있는지 정말 안드로이드 디바이스에 새로운 아니다

에서 폴더를 선택하는 새로운 뷰를 시작하는 버튼이 있습니다 이거 뭐야?

시도해 볼 수 있도록 방향을 알려주십시오. 코드 예제를 요구하지 않고, 가능한 방법이나 아이디어를 논리적으로 설명하고 있습니까?

답변

3

귀하의 질문은 매우 추상적이어서 구체적인 답변을 드릴 수는 없습니다.

나는 약간의 지침과 예제를 제공 할 수 있습니다.동적 환경 설정 (CheckboxPreference와 EditTextPreference 교체)를 추가

그 전에 파일의 목록을 얻을 :

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를 사용하여이 작업을 수행 할 personaly 것 :

을 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()를 설정할 수 있습니다.

구체적인 구현으로 시작한 다음 더 구체적인 질문으로 돌아갑니다.

+0

고맙다. 나는 이것을 시험해보고 거기에서 가져갈 것이다. – Harry

+1

이 대답을 유용하게 사용하면이를 수락 할 수 있습니다. 감사. – Tool

+0

여전히 알아 낸 부분,이 부분에 대해 잘 모름 LayoutInflater inflater = ((Activity) ctx) .getLayoutInflater(); – Harry

관련 문제