Dinamik Olarak Spinner Text Güncelleme
Android de Spinner yapısı açılır menü (dropdown) olarak kullanlan kullanışlı bir componenttir.
Farklı ihtiyaçlarınız doğrultusunda Spinner ınızın elemanlarının değerini değiştirmek isteyebilirsiniz.
Örneğin bir ListView iniz var.Ve içerisinde aynı kategoriden ama değişik durumlara sahip itemlar var ve siz bu itemları durumuna göre gruplandırıp sayısını Spinner da göstermek istiyorsunuz. Bunun için aşağıda belirtecek olduğum yapıyı kullanabilirsiniz.
Öncellikle String.xml dosyasına Spinner ımızda göstereceğimiz elemanları tanımlıyoruz.
String.xml
<string name="pazartesi">Pazartesi</string>
<string name="sali">Salı</string>
<string name="carsamba">Çarşamba</string>
<string name="persembe">Perşembe</string>
<string name="cuma">Cuma</string>
<string name="cumartesi">Cumartesi</string>
<string name="pazar">Pazar</string>
<string-array name="array_gonderi_list_haftalik">
<item>@string/pazartesi</item>
<item>@string/sali</item>
<item>@string/carsamba</item>
<item>@string/persembe</item>
<item>@string/cuma</item>
<item>@string/cumartesi</item>
<item>@string/pazar</item>
</string-array>
SpinnerHelper.java
public static String[] getChangedSpinnerItemText(Context context) {
String[] originalList = context.getResources().getStringArray(R.array.array_gonderi_list_haftalik);
Resources resources = context.getResources();
for (int a = 0; a < originalList.length; a++) {
int count = 0;
if (originalList[a].equals(resources.getString(R.string.pazartesi))) {
count = 2;
originalList[a] += " ( " + count + " )";
} else if (originalList[a].equals(resources.getString(R.string.sali))) {
count = 4;
originalList[a] += " ( " + count + " )";
} else if (originalList[a].equals(resources.getString(R.string.carsamba))) {
count = 7;
originalList[a] += " ( " + count + " )";
} else {
count = 8
originalList[a] += " ( " + count + " )";
}
}
return originalList;
}
Daha sonra spinnerımızı tanımladığımız yere giderek spinnerımızı yapılandırıyoruz.
FragmentX.java
public void setSpinnerNavToolbar() {
// Guncelledikten sonra spinner görünümü örneği
// Pazartesi ( 2 )
// Salı ( 4 )
// ...
// Spinner itemlarının güncellenmiş halini barındıran listeyi getiriyoruz.
String[] changedList = getChangedSpinnerItemText(context);
// Spinner adapterımıza eklemeler yapılmış String Arrayi veriyoruz.
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(mContext, R.layout.spinner_nav_item_layout,changedList);
Spinner spinner = (Spinner) findViewById(R.id.spinner_nav);
spiner.setAdapter(adapter);
spinner.setVisibility(NavigationView.VISIBLE);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// Original Liste elemanlarımızı getiriyoruz
String[] originalList = context.getResources().getStringArray(R.array.array_gonderi_list_haftalik);
// Original Liste elemanını baz alarak işlem yapmak
// Bu sayede Pazartesi , Salı gibi değerleri alıyoruz. Değiştirilmiş (güncellenmiş) değerleri sadece görünüm için kullanıyoruz.
String secilendeger = originalList[position];
// Pazartesi seçildiğinde yapmak istediğimiz işlemleri burada belirtebiliriz.
if (secilendeger.equals(getResources().getString(R.string.pazartesi))) {
}
// Salı seçildiğinde yapmak istediğimiz işlemleri burada belirtebiliriz.
else if(secilendeger.equals(getResources().getString(R.string.pazartesi)))
{
}
}
@DebugLog
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}