2016-05-04 5 views
0

私はLoopJ Android Asynchronous-Http-Clientの新機能です。PHP Webサービスでデータベースからデータを取得する方法を理解しました。spinner androidとAsynchronous-Http-Clientを実装する

マイServiceHandler:

public class ServiceHandler { 
    private static String BASE_URL="http:/my/url/"; 
    private static String GET_CAT= BASE_URL+"get_cat.php"; 
    private static AsyncHttpClient client= new AsyncHttpClient(); 
    public static void getAllCat(RequestParams params,AsyncHttpResponseHandler asyncHttpResponseHandler 
    ){ 
     client.get(GET_CAT,params,asyncHttpResponseHandler);};} 

マイAddBookActivity:このクラスでは、私は、データベースからカテゴリを取得するためにgetAllCatを使用しますが、今どのように私は私のスピナーを読み込むことができますか?

public class AddBookActivity extends AppCompatActivity { 
ServiceHandler client = new ServiceHandler(); 
    private Spinner spCat; 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     getAllCat(); 
    } 
    private void getAllCat(){ 

     client.getAllCat(null, new JsonHttpResponseHandler(){ 
        @Override 
        public void onSuccess(int statusCode,cz.msebera.android.httpclient.Header[] headers, JSONArray response) { 

         try { 

          for (int i=0; i<response.length();i++){ 
           Categories cat = new Categories(); 

           JSONObject obj =response.getJSONObject(i); 
           cat.setName(obj.getString("name")); 
          } 

         }catch (Exception e){ 
          e.printStackTrace(); 
         }}}); } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_add_book); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     spCat=(Spinner)findViewById(R.id.spinnercatname); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 
} 
+0

にだけで簡単な質問をこのコードを書く - あなたは「カテゴリ名」のリストを含むようにスピナーしたいですか?あなたが探しているものであれば私は解決策を提案できます。 – ishmaelMakitla

+0

まさにあなたが言ったように、スピナーに「カテゴリ名」のリストを含めるようにします。 – Amal

+0

OK、私の答えをチェックして、 。 – ishmaelMakitla

答えて

0

あなたが唯一のカテゴリ名のリストを移入したい場合は代わりに - JSONArrayの - そして、あなたはこのような何かにあなたのgetAllCat()を変更することができます:あなたはJSONArrayを使用したい場合は、しかし、

private void getAllCat(){ 

    client.getAllCat(null, new JsonHttpResponseHandler(){ 
     @Override 
     public void onSuccess(int statusCode,cz.msebera.android.httpclient.Header[] headers, JSONArray response) { 
      try { 
       List<String> categoryNames = new ArrayList<String>(); 
       for (int i=0; i<response.length();i++){ 
        JSONObject obj =response.getJSONObject(i); 
        String categoryName = obj.getString("name"); 
        categoryNames.add(categoryName); 
       } 
       //now that you have populated the array of category names - you can create the adapter for the spinner 
       ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categoryNames); 
       spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spCat.setAdapter(spinnerAdapter);    
       spinnerAdapter.notifyDataSetChanged();     

      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

- 「特別な」アダプターが必要になります。私は最近、同様の質問に答えました。 here for possible solutionにご確認ください。 私はこれが役立つことを願っています。

+0

ありがとうございました、あなたのソリューションを使用してその仕事をして、public void onSuccess(int statusCode、Header [] headers、JSONObject(int statusCode、cz.msebera.android.httpclient.Header [] headers、JSONArray response)私がjsonObjectを取得し、JsonArrayを取得しないため) – Amal

0

は、あなたのするonSuccessメソッド

try { 
    ArrayList<String> category = new ArrayList<String>(); 
    for (int i=0; i<response.length();i++){ 
     JSONObject obj = response.getJSONObject(i); 
     category.add(obj.getString("name")); 
    } 

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(AddBookActivity.this, android.R.layout.simple_list_item_1, category); 
    spCat.setAdapter.setAdapter(dataAdapter);    

}catch (Exception e){ 
    e.printStackTrace(); 
} 
関連する問題