2013-05-13 3 views
0

우리는 자바 파일의 배열을 xml 파일에 동적으로 추가하려고합니다.Java 파일의 배열을 android의 기존 XML 파일에 동적으로 추가하려면 어떻게해야합니까?

우리는 웹 사이트에서 XML 파일을 읽어 가득 ArrayList에의 catList 있습니다. ArrayList는 다음과 같이 채워집니다 : [item1, item2, item3, item4, item5].

preferences.xml로

<?xml version="1.0" encoding="utf-8"?> 

<ListPreference 
    android:title="Ondernemer selecteren" 
    android:summary="Bij deze optie kunt U kiezen van welke ondernemer U de agenda wilt zien." 
    android:key="listPref" 
    android:defaultValue="Standaard" 
    android:entries="@array/ondernemerArray" 
    android:entryValues="@array/ondernemerValues" 
/> 

</PreferenceScreen> 

arrays.xml

<?xml version="1.0" encoding="utf-8"?> 

<resources>  
<string-array name="ondernemerArray"> 
    <item></item> 
</string-array> 

<string-array name="ondernemerValues"> 
    <item></item> 
</string-array> 

사람은 우리가 요소 사이에 xml 파일에 동적으로 catList 배열을 넣어 동적으로 증가시킬 수있는 방법을 알고 있나요 요소의 양? 그들이 컴파일 후 내 댓글에 명시된 바와 같이

+3

런타임에'resources'를 변경할 수 없습니다. 일단 그들이 컴파일되면, 그게 전부입니다. [영구 저장소] (http://developer.android.com/guide/topics/data/data-storage.html) – codeMagic

답변

0

resources 변경할 수 없습니다. 따라서 여기에 Array과 같이 런타임 중에 업데이트해야하는 항목이 있으면 persistent storage options의 여러 가지 양식 중 하나를 사용해야합니다. 어느 것을 사용할지는 귀하의 데이터와 귀하의 요구에 달려 있습니다. 만약 당신이 그것을 영구적 인 필요가 없다면 당신은 static array을 사용할 수 있습니다. 그러나 그것이 당신이 여기서 필요로하는 것처럼 들리지는 않습니다.

resources은 대부분 자바 코드가 어지럽히 지 않도록 도와 주며 역동적 인 것이 아니라 개발자가 미리 컴파일하고 저장하고 참조 할 수있는 곳을 만들기 쉽게 만듭니다. 나는 이것이 당신이 찾고 있던 해답이 아니라는 것을 알고 있습니다. 그러나 희망적으로 그것은 약 resources에 대해 약간 명확한 것을 도울 수 있습니다.

누구든지 추가 할 수있는 더 나은 또는 더 정확한 설명이있는 경우, 당신은 Settings.XML의에서 기본 설정을 만들 동적 값으로 기본 설정 목록을 채우려면

1

을 편집 주시기하지만 안드로이드 지정하지 : 항목과 안드로이드를 entryValues ​​속성.

<ListPreference 
    android:title="@string/pref_title" 
    android:summary="@string/pref_summary" 
    android:key="prefkey" 
    android:defaultValue="" /> 

그런 다음 당신은 당신의 XML 데이터의 항목과 entryValues을 채우기 위해 환경 설정 활동에서 onCreate에 일부 코드를 추가합니다.

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.settings); 

    initializePreferenceList(); 

    ... 
} 

protected void initializePreferenceList(){ 

    ListPreference lpPref = (ListPreference)findPreference("prefkey"); 

    // Read your xml data somehow 
    ... 

    // Write some methods to fill a String array from your xml data: 
    // something like toEntriesArray, toEntryValuesArray 
    String[] entries = toEntriesArray(xmlData); 
    String[] entryValues = toEntryValuesArray(xmlData); 

    lpPref.setEntries(entries); 
    lpPref.setEntryValues(entryValues); 
} 

이 환경 설정에 대해 array.xml에 값을 정의 할 필요는 없습니다.

+0

안녕하십니까, 답장을 보내 주셔서 감사합니다. 그러나 "findPrefence"와 "addPreferencesFromResource"에서 eclipse이 오류를 발생시키기 때문에 여전히 작동하지 않습니다. 우리가 어떻게 해결할 수 있는지 알고 있습니까? – Geert

+0

@Geert, 버전을 확인한 후 메소드 android.preference.PreferenceActivity.findPreference가 API 레벨 11에서 사용되지 않습니다. 응답에 안드로이드 버전을 포함해야합니다. 죄송합니다. API 레벨 11 이상의 기기에서 비추천 API 인 PreferenceFragment.findPreference를 사용하는 방법에 대한 답을 찾았습니다. [link] (http://stackoverflow.com/a/11273826/1182515) – Diana

관련 문제