DevCorner: qualche aggiustamento e la progress dialog [FeedReader]

Giuseppe Tripodi
Giuseppe Tripodi Tech Master
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.