Un rapide billet pour parler d’une variante de jQuery : Android Query ou aQuery. Ce n’est évidemment pas du javascript ou du web, ça concerne le développement natif sous Android !
Sans être aussi complet, cette librairie reprends plusieurs concepts de jQuery comme son utilisation de type DSL et ses callbacks.
Un premier exemple, qui concerne la dynamisation des vues android, qui nous force à écrire du code très rébarbatif du genre :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
TextView nameView = (TextView) view.findViewById(R.id.name); if(nameView != null){ nameView.setText(content.getPname()); } TextView timeView = (TextView) view.findViewById(R.id.time); if(timeView != null){ long now = System.currentTimeMillis(); timeView.setText(FormatUtility.relativeTime(now, content.getCreate())); timeView.setVisibility(View.VISIBLE); } TextView descView = (TextView) view.findViewById(R.id.desc); if(descView != null){ descView.setText(content.getDesc()); descView.setVisibility(View.VISIBLE); } |
Avec Android Query, on a un selecteur par id et une API DSL, cela devient :
1 2 3 4 |
AQuery aq = new AQuery(view); aq.id(R.id.name).text(content.getPname()); aq.id(R.id.time).text(FormatUtility.relativeTime(System.currentTimeMillis(), content.getCreate())).visible(); aq.id(R.id.desc).text(content.getDesc()).visible(); |
Tout de suite plus simple à écrire ou à lire.
Un autre exemple, qui concerne la gestion des évènements et un listener:
1 2 3 4 5 6 7 |
ImageView tbView = (ImageView) view.findViewById(R.id.icon) tbView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { someMethod(v); } }); |
Qui devient :
1 |
aq.id(R.id.icon).clicked(this, "someMethod"); |
Je vous invite à voir d’autres exemples d’utilisation sur leur site, notamment les callback ajax et surtout la gestion des images, qui gère le téléchargement, un cache, le redimensionnement, les animations etc…