2013-01-14 3 views
0

이제 titlesList에 어댑터를 할당하는 데 문제가 있습니다 ... "setAdapter (ArrayAdapter) 메서드가 ArrayList 유형에 대해 정의되지 않았습니다."라는 오류가 발생합니다. 무엇을 잘못하고 있습니까?Android ArrayAdapter AsyncTask의 오류

문제는

package com.aer.illbehonest; 

import java.io.IOException; 
import java.io.InputStream; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.ArrayList; 
import java.util.concurrent.ExecutionException; 

import net.sf.json.JSONArray; 
import net.sf.json.JSONObject; 
import net.sf.json.JSONSerializer; 

import org.apache.commons.io.IOUtils; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class VideoPlay extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_video_play); 

     new ShowTitlesTask().execute(""); 
    } 

    class ShowTitlesTask extends AsyncTask<String, Void, ArrayList<String>> { 

    ArrayList<String> titlesList; 

    @Override 
    protected ArrayList<String> doInBackground(String... args) { 

    URL jsonURL = null; 
    try { 
      jsonURL = new URL("http://gdata.youtube.com/feeds/api/users/illbehonest/uploads?v=2&alt=jsonc"); 
     } catch (MalformedURLException e3) { 
      e3.printStackTrace(); 
     } 
      URLConnection jc = null; 
      try { 
       jc = jsonURL.openConnection(); 
      } catch (IOException e2) { 
       e2.printStackTrace(); 
      } 
      InputStream is = null; 
      try { 
       is = jc.getInputStream(); 
      } catch (IOException e1) { 
       e1.printStackTrace(); 
      } 
      String jsonTxt = null; 
      try { 
       jsonTxt = IOUtils.toString(is); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt); 

      JSONObject jdata = json.getJSONObject("data"); 

      JSONArray jentry = jdata.getJSONArray("items"); 
      for (int entryNumber = 0; entryNumber<=25; entryNumber++){ 
        JSONObject entry = jentry.getJSONObject(entryNumber); 
        titlesList.add(entry.getString("title")); 
      } 

      return titlesList; 
    } 
    protected void onPostExecute(ArrayList<String> result) { 
     ListView listView = (ListView)VideoPlay.this.findViewById(R.id.videolist); 

     ArrayAdapter<String> adapter = new ArrayAdapter<String> (VideoPlay.this, 
       android.R.layout.simple_list_item_1, android.R.id.text1, titlesList); 
     titlesList.setAdapter(arrayAdapter); 
     } 
    } 
} 
+0

당신은 붙여 넣기 logcat 수 있습니까? –

답변

1

this 대신 활동 (문맥)의 당신의 AsyncTask를 가리키는 클래스 ShowTitlesTask입니다. 시도하십시오 VideoPlay.this

+0

감사합니다. 그러나 titlesList.setAdapter (adapter)가 나에게 이것을 알려줍니다 : "ArrayList 에 대해 setAdapter (ArrayAdapter ) 메서드가 정의되지 않았습니다." –

+0

Errr ...'titlesList' 대신'listView '를 사용했기 때문입니다. 때로는 오류 메시지가 무엇이 잘못되었는지 명확하게 알 수 있습니다. – dmon

+0

정말 미안해. 긴 하루 였어. 도와 줘서 고마워. –