I have a class like
public class CountryVO { private String countryCode; private String countryName; private Drawable countryFlag; public String getCountryCode() { return countryCode; } public void setCountryCode(String countryCode) { this.countryCode = countryCode; } public String getCountryName() { return countryName; } public void setCountryName(String countryName) { this.countryName = countryName; } public Drawable getCountryFlag() { return countryFlag; } public void setCountryFlag(Drawable countryFlag) { this.countryFlag = countryFlag; } }
and want to store objects of this class in an TypeArray xml of android like
<resources> <array name="custom_arr"> <item> <countryName>Albania</countryName> <countryCode>al</countryCode> <countryFlag>@drawable/al</countryFlag> </item> <item> <countryName>Algeria</countryName> <countryCode>dz</countryCode> <countryFlag>@drawable/dz</countryFlag> </item> <item> <countryName>American Samoa</countryName> <countryCode>as</countryCode> <countryFlag>@drawable/as</countryFlag> </item> <item> <countryName>India</countryName> <countryCode>in</countryCode> <countryFlag>@drawable/in</countryFlag> </item> <item> <countryName>South Africa</countryName> <countryCode>sa</countryCode> <countryFlag>@drawable/sa</countryFlag> </item> </array> </resources>
how i want to access this array in my Activty class like
TypedArray customArr = getResources().obtainTypedArray(R.array.country_arr); CountryVO vo = new CountryVO(); vo.setCountryName(**value from array come here for first element's countryName attribute**); vo.setCountryCode(**value from array come here for first element's countryCode attribute**); vo.setCountryFlag(**value from array come here for first element's countryFlag attribute**);
But i don't to how to achieve this. I tried customArr.getString(0); but it gives me everything as string like Albania al @drawable/al
Please help me to solve this problem.
Thanks a lot in advance,
With best regards, Ishan
Here is example. Read it and look at the methods of TypedArray like get...()
for example getDrawable(int index)
. I would suggest to keep items of the same type in separated arrays.
<array name="country"> <item>Albania</item> <item>Algeria</item> <item>American Samoa</item> </array> <array name="code"> <item>al</item> <item>dz</item> <item>as</item> </array> <array name="flag"> <item>@drawable/dz</item> <item>@drawable/al</item> <item>@drawable/as</item> </array>
EDIT:
public CountryVO getCountryVO(int index){ Resources resources = getResources(); TypedArray country = resources.obtainTypedArray(R.array.country); TypedArray code = resources.obtainTypedArray(R.array.code); TypedArray flag = resources.obtainTypedArray(R.array.flag); CountryVO vo = new CountryVO(country.getString(index), code.getString(index), flag.getDrawable(index)); country.recycle(); code.recycle(); flag.recycle(); return vo; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With