Autore Topic: Primo widget  (Letto 1371 volte)

Offline Pacobillo

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus one
  • Sistema operativo:
    Windows 7
Primo widget
« il: 23 Ottobre 2013, 11:46:30 CEST »
0
Ciao a tutti!!
Ho fatto il mio primo widget, ma c'è una cosa che non va e non so perchè...
Vi spiego la mia idea.

Ho un file xml che contiene delle notizie ordinate, la prima è la più nuova.
Nell' App apro la lista delle news, e se ne seleziono una, la leggo.
Nel widget volevo far vedere sempre l'ultima news e, con un pulsante, aprire questa news.
Allora, appena faccio il widget, tutto ok, si vede la news e se premo vado alla news.
Poi modifico il file xml aggiungendo una news
Se vado nell'App, tutto ok, vedo la nuova news e posso aprirla.
Atteso il tempo di refresh, il widget mi fa vedere la nuova news, bene.
Ma se premo...ecco il problema...mi fa vedere la precedente news e non l'ultima!!!
E così fino a che non spengo il dispositivo, poi tutto funziona di nuovo.
E' come se qualcosa rimanesse in memoria, ma non so dove sto sbagliando... (benchè sia sicuro che io stia sbagliando... :) )
Potete aiutarmi?
Grazie!!

Ecco il codice:

Codice (Java): [Seleziona]
package com.tdgpisa.widget;

import java.util.ArrayList;

import com.tdgpisa.Notizia;
import com.tdgpisa.R;
import com.tdgpisa.utility.ParserNews;
import com.tdgpisa.utility.SingolaNews;

import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.widget.RemoteViews;

public class Wnews extends AppWidgetProvider {
       
        Context mycontext;
        AppWidgetManager myappWidgetManager;
        int[] myappWidgetIds;
       
        @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
                super.onUpdate(context, appWidgetManager, appWidgetIds);
                mycontext=context;
                myappWidgetManager=appWidgetManager;
                myappWidgetIds=appWidgetIds;
               
               
                asincrona myasincrona = new asincrona();
                myasincrona.execute(null);
        }



        private class asincrona extends AsyncTask<String,Void,Void>{
               
                ArrayList<SingolaNews> RisultatoXML;


                @Override
                protected Void doInBackground(String... params) {

                        ParserNews AnalizzaNews=new ParserNews();
                        AnalizzaNews.SpacchettaXML("indirizzo XML");
                        RisultatoXML = AnalizzaNews.getNewsSpacchettate();

                        return null;        
                }

                @Override
                protected void onPostExecute(Void result){

                        super.onPostExecute(result);



                        final int N = myappWidgetIds.length;
                        for (int i = 0; i < N; i++) {
                                int awID = myappWidgetIds[i];

                                RemoteViews widget = new RemoteViews(mycontext.getPackageName(),R.layout.rigawid);
                                widget.setTextViewText(R.id.titolo, RisultatoXML.get(0).getTitolo());


                                Intent iNotizia = new Intent(mycontext, Notizia.class);
                                iNotizia.putExtra("data", RisultatoXML.get(0).getData());
                                iNotizia.putExtra("titolo", RisultatoXML.get(0).getTitolo());
                                iNotizia.putExtra("testo", RisultatoXML.get(0).getTesto());
                                iNotizia.putExtra("foto", RisultatoXML.get(0).getFoto());

                                PendingIntent pi = PendingIntent.getActivity(mycontext, 0, iNotizia, 0);
                                widget.setOnClickPendingIntent(R.id.freccia, pi);

                                myappWidgetManager.updateAppWidget(awID, widget);

                                return;
                        }

                }
        }
}

Offline FrancescoAndroid

  • Utente junior
  • **
  • Post: 69
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    GiMiSiS Interactive
  • Sistema operativo:
    Android 2.3.3
Re:Primo widget
« Risposta #1 il: 11 Marzo 2014, 15:16:27 CET »
0
per prima cosa ti sconsiglio di mettere classi innestate ne va della leggibilità del codice