2016-08-03 8 views
1

私はListViewを持っています。各行をクリックすると、新しいIntentのサービスからダウンロードが開始されます。ダウンロードサービスからListViewの行を更新する方法

クリックした行のprogressBarは、サービスから取得した情報からどのように更新できますか?

+0

サービスからのブロードキャストを送信し、リストアクティビティ –

答えて

0

ブロードキャストレシーバーを使用して、アクティビティーのプログレスバーに通知します。あなたのケースでは、受信時にブロードキャストが進行状況バーを更新して、アダプタにデータ変更を通知します。サービスで

1

活動中の他の側では
Intent i = new Intent("Updated_Count"); 
i.putExtra("progress", <progress count>); 
i.putExtra("row_index", <row_index>); 
sendBroadcast(i); 

以下のように放送送るあなたは

ドン」あなたのリストの活動にでサブクラスとしてクラスの上に置くことができます

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   
    } 
} 

それを受け取ります放送受信機の登録/登録解除を忘れた

ハッピーコーディンg!

次の例を参照することができますサービスを通じてあなたが活動へのサービスからブロードキャストレシーバーを使用することができますかfragment.youに登録する必要がと onResume()上と onPause()に未登録の放送や活動にブロードキャストインスタンスを作成し、sendBroadcast
+0

で受信できます。役立つと思われる場合は、他のユーザーにとっても役立つように、これを回答としてマークしてください。 –

+0

私のリストビューの各行には独自のprogressBarがあります。どうすれば正確な行のprogressBarを正確に更新できますか? – DavidOli

+0

あなたがサービス終了時に管理しなければならないことは、インデックスまたはIDを渡すときに複数のダウンロードがあるか、またはサービスから各行のために何かユニークなものを追加することです –

関連する問題