DevCorner: qualche aggiustamento e la progress dialog [FeedReader]
Come si intuisce dal titolo, per questa settimana ci concentreremo a rivedere alcuni piccoli dettagli del nostro FeedReader, che sta crescendo settimana dopo settimana. Vediamo insieme come dargli una svecchiata con alcuni semplici passaggi.
Per prima cosa, andiamo a modificare leggermente quanto avevamo fatto due settimane fa: visto che non è necessario che l'Activity acceda a tutto l'oggetto, onde evitare memory leak facciamo in modo che con l'Intent vengano passati semplicemente titolo e contenuto dell'articolo come due stringhe: dopotutto sono tutto ciò che ci serve per completare la schermata FullArticle. Modifichiamo quindi in questo modo il codice dall'activity pricinipale (vedremo tra poco la funzione della ProgressDialog):
@Override
public void update(Observable observable, Object data) {
myProgressDialog.dismiss();
listaArticoli = (ArrayList) data;
ArticoloAdapter mArticoloAdapter = new ArticoloAdapter(this,listaArticoli);
listViewArticoli.setAdapter(mArticoloAdapter);
listViewArticoli.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView> av, View view, int i, long l)
{
Intent toFullArticle = new Intent(ctx, FullArticle.class);
toFullArticle.putExtra("titoloArticolo",listaArticoli.get(i).getTitolo());
toFullArticle.putExtra("contenutoArticolo",listaArticoli.get(i).getContenuto());
startActivity(toFullArticle);
}
});
}
e di conseguenza aggiorniamo anche l'activity che contiene la webview:
Bundle extras = getIntent().getExtras();
String titolo = extras.getString("titoloArticolo");
String contenuto = extras.getString("contenutoArticolo");
article.getSettings().setJavaScriptEnabled(true);
article.loadDataWithBaseURL(null, "
\n"+"
"+titolo+"
"+contenuto, null, null, null);
A questo punto, per dare più uniformità alla ScrollView, potrebbe essere una buona idea scalare tutte le immagini per far sì che venga sempre inquadrato il centro dell'anteprima: dalle proprietà della SmartImageView impostiamo quindi lo ScaleType a CenterCrop.
Infine, per migliorare l'esperienza utente, potrebbe essere una buona idea inserire una ProgressDialog che venga mostrata finché non viene caricata l'intera lista. Ecco, quindi, come andremo a modificare l'OnCreate della nostra activity principale:
public class MyActivity extends ActionBarActivity implements Observer
{
ConnectionHelper cHelper = null;
XMLParser xmlParser = null;
ArrayList listaArticoli = null;
ListView listViewArticoli;
Context ctx;
ProgressDialog myProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
ctx= this;
myProgressDialog = new ProgressDialog(ctx);
myProgressDialog.setCancelable(false);
myProgressDialog.show();
listViewArticoli = (ListView) findViewById(R.id.listViewArticoli);
cHelper = ConnectionHelper.getInstance();
loadFeed();
myProgressDialog.setMessage("Caricamento...");
}
Il breve appuntamento di questa settimana è finito: alcune piccole modifiche che, per quanto possano sembrare banali, aiutano a migliorare l'interfaccia e la User Experience. Come sempre potete chiedere assistenza nella sezione sviluppo del nostro forum e scaricare il codice aggiornato sulla repo di github.