2016-09-18 6 views
0

私のプロジェクトでは、AsyncTaskを使用して、のリストビューのデータをインターネットからロードしています。その後、私はAsyncTaskLoaderを使用して、インターネットからデータをロードするLoaderを使用しました。しかし今、私はボレーがインターネットからデータを取り出す良い方法だと分かっています。だから私の質問はローダーでデータをロードする方法ですVolley?現在私はローダーの助けを借りてlistViewにデータを表示していますが、データをロードするためにローダーを使用していない場合、Volleyを使用してlistViewにデータをロードする代替手段は何ですか?1つのAndroidプロジェクトでVolleyとLoaderを使用するにはどうすればよいですか?

プロジェクトURL:https://github.com/CSS08/InfiniteNews

+0

データを表示するローダーのコードを含めてください。次に、Volleyを使用するときにどのように変更する必要があるかを提案することができます。 – ishmaelMakitla

+0

ちょっと@ishmaelMakitla私は自分のプロジェクトのURLを追加しました。私はvollyを使ってデータを取得したいのですがどうしたらいいですか? –

答えて

0

あなたは、この目的のために飛来StringRequestを使用することができます - あなたは、あなたはすでにあなたのQueryResolverクラスを持っているコードを使用して応答JSONを解析。下記のコードサンプルをご覧ください - これはあなたの目的のためにVolleyを使用する方法のいくつかのアイデアを与えるはずです - あなたはコードを置く場所を決めるかもしれません - 私はあなたにどのようにVolleyライブラリの使用を達成できるかについてのヒントを与えます。

try{ 
     RequestQueue queue = Volley.newRequestQueue(context);   
     StringRequest newsDataRequest = new StringRequest(Request.Method.GET,url, new Listener<String>() { 
      @Override 
      public void onResponse(String newsDataJson) {     
       Log.i(TAG, "Got News Articles From Server:: "+newsDataJson); 
       //Now process the volley response using your QueryResolver code: 
       List <NewsData> newsData = QueryResolver.extractFromJson(newsDataJson); 
       //with the newsData - you can now update your adapter - I am using an example here 
       newsDataAdapter.clear(); 
       // If there is a valid list of {@link NewsData}s, then add them to the adapter's 
       // data set. This will trigger the ListView to update. 
       if (newsData != null && !newsData.isEmpty()) { 
        newsDataAdapter.addAll(newsData); 
       } 
      } 

     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       //there was an error - you want to print it out here... 
      } 
     }); 
     //add the request to queue 
     queue.add(newsDataRequest); 
    } 
    catch(Exception e){ 
     //some issues here - 
    } 

私はこれがあなたを助けてくれることを願っています。ここではbasic Volley tutorialを確認できます。

バックグラウンドでダウンロードする AsyncTaskを使用しています
0

代わりのAsyncTaskLoader、あなたはLoader<NewsData>を拡張し、その中で実際のロードを行いますonForceLoad()方法エンキューバレーボール要求、だクラスを書くことができます。その後、VolleyのonResponseコールバックで、結果をLoaderのdeliverResultメソッドに渡します。そうすれば、ローダーのメリットをすべて引き出し、ネットワーキングのパフォーマンスを向上させることができます。

+0

ありがとうございます。あなたは説明してください "次に、VolleyのonResponseコールバックで、結果をLoaderのdeliverResultメソッドに渡します。"この行にはコーディングがあります。 –

関連する問題