2016-10-02 51 views
0

我正在從網站下載數據並希望將其放入ArrayList中。我正在下載2個表單,圖像和URLS。發送數據到Arraylist Android JSOUP

ArrayList<String> artistNames = new ArrayList<String>(); 
    ArrayList<String> artistImageURLS = new ArrayList<String>(); 
    int chosen = 0; 


    public class nameGetterClass extends AsyncTask<Void, Void, String>{ 

     Handler handle; 
     Document doc; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected String doInBackground(Void... strings) { 
      try { 
       String url = "http://www.billboard.com/charts/artist-100"; 
       doc = Jsoup.connect(url).get(); 
       Elements names = doc.select("div.chart-row__title > h2.chart-row__song"); 
       for (Element p : names) 
        artistNames.add(p.text()); 
        // Log.i("names,", p.text()); 
      } 
      catch(IOException ex){ 
      } 
      return null; 
     } 
     @Override `**<--- ERROR HERE: method does not override superclass**` 
     protected void onPostExecute(Void result) { 
     } 
     } 

我收到了錯誤,如第二行最後一行所述。

這實際上甚至不會添加任何內容到arraylist,我現在應該做什麼?

回答

0
protected String doInBackground(Void... strings) { 
      try { 
       String url = "http://www.billboard.com/charts/artist-100"; 
       doc = Jsoup.connect(url).get(); 
       Elements names = doc.select("div.chart-row__title > h2.chart-row__song"); 
       for (Elements p : names) 
        artistNames.add(p.text()); 
        // Log.i("names,", p.text()); 
      } 
      catch(IOException ex){ 
      } 
      return null; 
     } 

請更新的foreach內符合你把元元素。如果你還有問題,請嘗試粘貼在模擬器中運行的控制檯輸出,以便讓人們瞭解真正的問題。

+0

這給出了一個錯誤 – NewToJava

0

嘗試使用排球庫。它很容易和更新 https://developer.android.com/training/volley/request.html

ArrayList<String> artistImageURLS = new ArrayList<String>(); 

String url = "http://my-json-feed"; 

JsonObjectRequest jsObjRequest = new JsonObjectRequest 
     (Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

    @Override 
    public void onResponse(JSONObject response) { 

     artistImageURLS.add(response.toString()); 

    } 
}, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     // TODO Auto-generated method stub 

    } 
}); 

// Access the RequestQueue through your singleton class. 
MySingleton.getInstance(this).addToRequestQueue(jsObjRequest); 

這裏的辛格爾頓:

public class MySingleton { 
    private static MySingleton mInstance; 
    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 
    private static Context mCtx; 

    private MySingleton(Context context) { 
     mCtx = context; 
     mRequestQueue = getRequestQueue(); 

     mImageLoader = new ImageLoader(mRequestQueue, 
       new ImageLoader.ImageCache() { 
      private final LruCache<String, Bitmap> 
        cache = new LruCache<String, Bitmap>(20); 

      @Override 
      public Bitmap getBitmap(String url) { 
       return cache.get(url); 
      } 

      @Override 
      public void putBitmap(String url, Bitmap bitmap) { 
       cache.put(url, bitmap); 
      } 
     }); 
    } 

    public static synchronized MySingleton getInstance(Context context) { 
     if (mInstance == null) { 
      mInstance = new MySingleton(context); 
     } 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      // getApplicationContext() is key, it keeps you from leaking the 
      // Activity or BroadcastReceiver if someone passes one in. 
      mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); 
     } 
     return mRequestQueue; 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     getRequestQueue().add(req); 
    } 

    public ImageLoader getImageLoader() { 
     return mImageLoader; 
    } 
}