Estou tentando fazer com que recebendo por parametro uma pessoa consiga fazer uma alteração em um atributo de um componente.
Ex: quero mudar o texto de um TextView.
No construtor a chamada do método é assim:
atributos("01label,setText,algo no label");
O método, consegui fazer tudo, e ele está funcionando, mas somente para o "setText", pois o método recebe a String "setText" passada e compara, com o getDeclaredMethod(), com todos os metodos dentro da classe TextView.. o ruim está em que para fazer a comparação eu sou obrigado a passar o tipo do parâmetro que o método irá receber, como eu quero fazer algo dinamico para qualquer metodo existente, como poderia saber qual é o parametro que o metodo da TextView tem q receber?? Pq dai eu o instanciaria e já era.
metodo:
public void atributos(String atributos){
String[] separadas = atributos.split(",");
int posicao = Integer.parseInt(separadas[0].substring(0, 2));
String item = separadas[0].substring(2);
String atributo = separadas[1];
String alterar = separadas[2];
Class<CharSequence> aux = CharSequence.class;
if(item.equals("botao")){
} else if(item.equals("label")){
for (Iterator<TextView> iterator = altv.iterator(); iterator.hasNext();) {
TextView obj = (TextView) iterator.next();
if(obj.getId() == posicao){
Method metodos;
try {
metodos = TextView.class.getDeclaredMethod(atributo, aux);
metodos.invoke(obj, alterar);
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
} else if(item.equals("checkBox")){
} else if(item.equals("editText")){
}
}
Vlws