2015-01-11 2 views
0

listpreference의 항목 및 항목 값을 dinamically 변경하고 싶습니다. 음, 마침내 작동하지만 목록이 변경되지만 문제는 환경 설정 화면의 listpreference에서 두 번째 이상을 클릭 할 때만 새 값을 볼 수 있다는 것입니다.두 번째에만 작동하는 코드로 ListPreference 항목을 변경하십시오.

처음 목록 1에서 10

 numeroIntentosLP.setOnPreferenceClickListener(new OnPreferenceClickListener() 
    { 
     @Override 
     public boolean onPreferenceClick(Preference preference) 
     { 

      CharSequence[] NuevosValores = new String[10 - LineaActual]; 
      int Indice = 0; 

      for(int i = LineaActual + 1; i <= 10; i++) 
      { 
       NuevosValores[Indice++] = String.valueOf(i); 
      } 

      numeroIntentosLP.setEntries(NuevosValores); 
      numeroIntentosLP.setEntryValues(NuevosValores); 

      return true; 
     } 
    }); 
내가 numeroIntentosLP.setOnPreferenceChangeListener으로 시도

,하지만 같은 결과를 항상 원래의 목록입니다. LineAActual은 MainActivity에서 PreferenceActivity로 전달 된 정수 값입니다. 이것은 내가 목록의 새로운 시작 값을 아는 데 유용합니다.

그래서 환경 설정 화면을 열고 listpreference에서 처음 클릭 할 때마다 항상 1에서 10까지의 숫자를 얻지 만 몇 번이나 아무리 클릭해도 다시 원하는대로 얻을 수 있습니다. LineaActual에서 10까지의 목록을 의미합니다.

미리 감사드립니다.

+0

왜 onPreferenceClick()에서 setEntries() 및 setEntryValues ​​()를 호출합니까? 왜 그냥 onCreate()에서하지 않습니까? – samgak

답변

0

좋아, 해결책을 찾았습니다. 코드를 onCreate에 직접 배치하는 것만 큼 간단하고 리스너에는 넣지 않아도됩니다.

감사합니다 samgak, 나는 당신의 대답을 조금 늦게 보았고 당신 말이 맞습니다, 어쨌든 당신을 감사하십시오.

관련 문제