2012-04-10 8 views
0

もう1人のAndroid初心者がここにいます!リモートデータベースからスピナーを挿入できません

私がエラーをチェックするのを助けるために、私はトーストを使用したときに私は解明しました。私は403禁じられたエラーを取得している、と私はそれを引き起こしているのか分からない。私の別の機能がデータベースからデータを返すので、URLは正しい。

public class FillKeg extends Activity { 

    Spinner spinBeerList; 
    ArrayList<String> BeerList; 
    ArrayAdapter<String> adapter; 

    JSONArray jArray; 
    String result = null; 
    InputStream is = null; 
    StringBuilder sb = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.fillkeg); 
     spinBeerList = (Spinner)findViewById(R.id.spinBeerList); 
     BeerList = new ArrayList<String>(); 
     new getBeerList().execute("http://*****/kegdroid/getBeerList.php"); 
     adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, BeerList);  
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinBeerList.setAdapter(adapter); 
    } 

    private class getBeerList extends AsyncTask<String, Void, String> { 

     protected String doInBackground(String... urls) { 
      //http post 
      for (String url : urls) { 
       DefaultHttpClient httpclient = new DefaultHttpClient(); 
       HttpPost httppost = new HttpPost(url); 
       try{ 
        HttpResponse response = httpclient.execute(httppost); 
        HttpEntity entity = response.getEntity(); 
        is = entity.getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
        sb = new StringBuilder(); 
        sb.append(reader.readLine() + "\n"); 

        String line = "0"; 
        while ((line = reader.readLine()) != null) { 
          sb.append(line + "\n"); 
        } 
        is.close(); 
        result = sb.toString(); 
       } 
       catch(Exception e){ 
        Log.e("log_tag", "Error in http connection" + e.toString()); 
       } 
      } 
      return result; 
     } 

     protected void onPostExecute(String result){ 
      try{ 
       jArray = new JSONArray(result); 
       JSONObject json_data = null; 
       for(int i = 0; i < jArray.length(); i++){ 
        json_data = jArray.getJSONObject(i); 
        BeerList.add(json_data.getString("ContentsName")); 
       }  
      } 
      catch(JSONException ex){ 
       ex.printStackTrace(); 
      } 
      catch (ParseException ex) { 
       ex.printStackTrace(); 
      } 
     } 

    } 
} 
+0

NO。決して。これまでHTTPスレッドをUIスレッドで実行します。この。 IS。悪い。 – OcuS

+0

さて、AsyncTaskを実装するように変更しました。しかし、スピナーはまだ人口がない。 – Crevax

答えて

0

私は本当にこれについて愚かだと感じますが、私のエラーはApacheの設定であり、アプリケーションコードではありません。私のWAMPインストール用の最近のApacheアップデートでは、コールからネットワークIPへのアクセスが拒否されました。

私のコードの他の領域を解決するのに役立つOcuSとBrian Cooleyに大変感謝しています!

0

あなたのAdapternotifyDataSetChangedを呼び出すことなくバックアップArrayListを更新しています。 onPostExecuteの末尾に電話番号adapter.notifyDataSetChanged();を追加してみてください。

また、BeerListと同様の呼び出しの代わりにadapter.add(json_data.getString("ContentsName"));を呼び出して、Spinnerを自動的に更新する必要があります。

+0

それは、この特定の問題の解決策ではありませんでした(自分自身を考え出し、それを引き起こした原因について愚かなことを感じました)が、次に調べるべき問題を解決しました。だから、ありがとう! – Crevax

関連する問題