2016-09-18 7 views
0

В моем проекте сначала я использую AsyncTask для загрузки данных в listView из Интернета. После этого я использовал Loader для загрузки данных из Интернета с помощью AsyncTaskLoader. но теперь я нахожу, что волейбол - лучший способ получить данные из Интернета. Поэтому мой вопрос заключается в том, как загружать данные в загрузчик, используя Volley? В настоящее время я показываю данные в listView с помощью загрузчика, но если я не использую загрузчик для загрузки данных, то какова альтернатива для загрузки данных в listView с помощью Volley?Как я могу использовать Volley и Loader в одном проекте Android?

URL проекта: https://github.com/CSS08/InfiniteNews

+0

Пожалуйста, укажите код вашего загрузчика, в котором вы показываете данные, - тогда мы можем предложить, как вам нужно изменить это при использовании Volley. – ishmaelMakitla

+0

Эй, @ishmaelMakitla, я добавил URL-адрес проекта, теперь хочу использовать volly для извлечения данных, так как я это делаю? –

ответ

0

Вы можете использовать Volley StringRequest для этой цели - вы затем проанализировать ответ JSON используя код, который вы уже имеете в своем QueryResolver классе. Пожалуйста, см. Пример кода ниже - это должно дать вам некоторое представление о том, как использовать 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.

0

Вместо AsyncTaskLoader, который использует AsyncTask для загрузки в фоновом режиме, вы можете написать класс, который расширяет Loader<NewsData> и это onForceLoad() метода Епдиеих запросов волейболла, которые будут делать фактическую нагрузку. Затем в Volley's onResponse обратный вызов передает результат методу Loader's deliverResult. Таким образом, вы сохраните все преимущества Loader и улучшите производительность сети.

+0

Спасибо, я понял. можете ли вы объяснить «Тогда в обратном вызове OnResponse волейбола результат будет передан методу DeliveryResult Loader». эта строка с кодированием. –

 Смежные вопросы

  • Нет связанных вопросов^_^