2013-08-17 2 views
2

sdcard에서 JSON을 구문 분석하려고합니다.JSON을 구문 분석하는 중에 오류가 발생했습니다.

The method execute(String...) in the type AsyncTask<String,Void,SimpleAdapter> is not applicable for the arguments (StringBuilder) 

가이 코드를 해결하기 위해 일주일 이상을 지출하지만 난 그것을 만든 couln't : 나는 간단한 어댑터를 AsyncTask를 위해 실행하려고하면, 나는 다음과 같은 오류를 얻고있다. 내 코드는 다음과 같습니다

public class Jeans extends Activity { 
    private final String JSON_file = "country.json"; 
    File jsonFile; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.baby1_1); 

     /** Getting Cache Directory */ 
     File cDir = ExternalStorage.getSDCacheDir(this, "json_files"); 

     /** Getting a reference to temporary file, if created earlier */ 
     jsonFile = new File(cDir.getPath() + "/" + JSON_file) ; 

     String strLine=""; 
     StringBuilder strJson = new StringBuilder(); 

     /** Reading contents of the temporary file, if already exists */ 
     try { 
      FileReader fReader = new FileReader(jsonFile); 
      BufferedReader bReader = new BufferedReader(fReader); 

      /** Reading the contents of the file , line by line */ 
      while((strLine=bReader.readLine()) != null ){ 
       strJson.append(strLine); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }catch(IOException e){ 
      e.printStackTrace(); 
     } 


    System.out.println(strJson); 


     /** The parsing of the xml data is done in a non-ui thread */ 
     // ListViewLoaderTask listViewLoaderTask = new ListViewLoaderTask(); 

     /** In here i'm getting the error */ 
     new ListViewLoaderTask().execute(strJson); 

    } 


    private class ListViewLoaderTask extends AsyncTask<String, Void, SimpleAdapter>{ 

     JSONObject jObject; 
     /** Doing the parsing of xml data in a non-ui thread */ 
     @Override 
     protected SimpleAdapter doInBackground(String... strJson) { 
      try{ 
       jObject = new JSONObject(strJson[0]); 
       CountryJSONParser countryJsonParser = new CountryJSONParser(); 
       countryJsonParser.parse(jObject); 
      }catch(Exception e){ 
       Log.d("JSON Exception1",e.toString()); 
      } 

      CountryJSONParser countryJsonParser = new CountryJSONParser(); 

      List<HashMap<String, String>> countries = null; 

      try{ 
       /** Getting the parsed data as a List construct */ 
       countries = countryJsonParser.parse(jObject); 
      }catch(Exception e){ 
       Log.d("Exception",e.toString()); 
      } 

      /** Keys used in Hashmap */ 
      String[] from = { "country","flag","details"}; 

      /** Ids of views in listview_layout */ 
      int[] to = { R.id.tv_country,R.id.iv_flag,R.id.tv_country_details}; 

      /** Instantiating an adapter to store each items 
      * R.layout.listview_layout defines the layout of each item 
      */ 
      SimpleAdapter adapter = new SimpleAdapter(getBaseContext(), countries, R.layout.lv_layout, from, to); 

      return adapter; 
     } 

     /** Invoked by the Android system on "doInBackground" is executed completely */ 
     /** This will be executed in ui thread */ 
     @Override 
     protected void onPostExecute(SimpleAdapter adapter) { 

      /** Getting a reference to listview of main.xml layout file */ 
      ListView listView = (ListView) findViewById(R.id.lv_countries); 

      /** Setting the adapter containing the country list to listview */ 
      listView.setAdapter(adapter); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

누군가가 나를 위해이 코드를하십시오 해결하십시오.

답변

2

.

는 수행

/** In here i'm getting the error */ 
    new ListViewLoaderTask().execute(strJson.toString()); 

당신이 개체를 작업 할 때, 당신은 문자열을 만들 수 toString() 방법을 사용할 필요가 있음을 기억하십시오.

+0

고마워. 이것이 내가 원했던 것이다. – Kabil

+0

Blaine이 질문에 답하십시오 : http://stackoverflow.com/questions/18302964/need-help-on-json-parsing-2-issues – Kabil

6

잘못된 유형, String해야한다 : 당신은 문자열 전달되지 않기 때문에 당신은 오류가 발생하는

new ListViewLoaderTask().execute(strJson.toString()); 
+0

고맙습니다. 마지막으로 그것은 일했습니다 – Kabil

관련 문제