2016-10-02 9 views
0

私はウェブサイトからデータをダウンロードしており、ArrayListに入れたいと思います。私は2つのフォーム、画像、URLをダウンロードしています。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) { 
     } 
     } 

2番目の最後の行に記載されているエラーが発生します。

これは実際には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

volleyライブラリで使用するようにしてください。その簡単かつ 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; 
    } 
} 
関連する問題