2016-08-03 61 views
1

I hava a ListView und wenn Sie auf jede Zeile klicken, wird der Download von einem Dienst in einem neuen Intent gestartet.So aktualisieren Sie eine ListView-Zeile von einem Download-Dienst

Wie kann ich die progressBar in der angeklickte Zeile von den Informationen aktualisieren, die ich vom Dienst bekomme?

+0

Sie können Broadcast vom Dienst senden und erhalten Sie in der Liste Aktivität –

Antwort

0

Verwenden Sie einen Broadcast-Empfänger, um die Statusanzeige in der Aktivität zu benachrichtigen. In Ihrem Fall die Broadcast bei erhalten Sie die Fortschrittsanzeige aktualisieren und dann den Adapter der Datenänderung benachrichtigen.

1

In Dienst senden ausgestrahlt wie unten

Intent i = new Intent("Updated_Count"); 
i.putExtra("progress", <progress count>); 
i.putExtra("row_index", <row_index>); 
sendBroadcast(i); 

auf der anderen Seite in Tätigkeit erhalten sie

public class newMessage extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    {  
     String action = intent.getAction(); 
     if(action.equalsIgnoreCase("Updated_Count")){  
     Bundle extra = intent.getExtras(); 
     String progress= extra.getString("progress"); 
     String index = extra.getString("row_index"); 
     // now you can play with progress for any particular list row   
    } 
} 

Sie oben Klasse als Unterklasse in Ihrer Liste Aktivität

Don platzieren‘ t vergessen, Rundfunkempfänger zu registrieren/abzumelden

Happy Codin G!

+0

, wenn Sie es hilfreich für Sie gefunden und es löst was Sie wollen dies als Antwort, so dass es auch für andere nützlich sein kann. –

+0

Jede Zeile meiner ListView hat ihre eigene Fortschrittsbalken, also wie kann ich genau die progressBar der exakten Reihe aktualisieren? – DavidOli

+0

, die Sie am Service-Ende verwalten müssen, wenn es mehrere Downloads auf geht als Pass-Index oder ID oder etwas einzigartiges Ding für jede Zeile aus Service über extra –

0

Sie können mit Broadcast-Receiver aus dem Dienst auf die Aktivität oder fragment.you müssen sich registrieren und nicht registrierte Sendung auf onResume() und auf onPause() und erstellt Broadcast-Instanz in Aktivität und sendBroadcast durch Service Sie das folgende Beispiel verweisen: http://www.truiton.com/2014/09/android-service-broadcastreceiver-example/