//通过string-array
name属性动态获取R.array.xxx的int值
public
CharSequence[] getListData(String name) {
try
{
Class<?>
arrayClass = getArrayResource().getClass();
Field
intField = arrayClass.getField(name);
int
sourceId = intField.getInt(name);
return
getResources().getTextArray(sourceId);
}
catch
(Exception e) {
e.printStackTrace();
}
return
null
;
}
private
Object arrayResource =
null ;
private
Object getArrayResource() {
if
(arrayResource ==
null )
{
Class<?>
resource = R. class ;
try
{
Class<?>[]
classes = resource.getClasses();
for
(Class<?> c : classes) {
int
i = c.getModifiers();
String
className = c.getName();
String
s = Modifier.toString(i);
if
(s.contains(
"static" )
&& className.contains( "array" ))
{
return
c.getConstructor().newInstance();
}
else
{
continue ;
}
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
return
arrayResource;
}
|