2016-06-02 13 views
0

Ich habe die beiden Spinner in xml erstellt, nämlich myspinner und myspinner1. Der myspinner-Wert wird aus dem json-Wert bezogen. Basierend auf dem ausgewählten myspinner-Element erhalten wir die Hotel-ID. Die abgerufene Hotel-ID wird verwendet, um die andere AsyncT1 aufzurufen. In der AsyncT1 wird der myspinner1-Wert aufgelistet. Mein Problem ist, wenn ich wählen sie den Myspinner der myspinner1 Wert nicht aktualisiert wird, bleibt same.I die adapter.notifydatasetchanged versucht haben(), aber bis jetzt nichtAktualisiere den zweiten Spinner basierend auf dem ersten Spinner Item

class AsyncT extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 
      SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE); 
      String userID = prefs.getString("userid", null); 
      System.out.println("userID---"+userID); 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://airbnb.abservetech.com/demo/public/mobile/hotelroom/hotel"); 

      try { 
       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("user_id", userID)); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       Log.e("mainToPost", "mainToPost" + nameValuePairs.toString()); 


     /* execute */ 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 
       InputStream inputStream = response.getEntity().getContent(); 
       InputStreamToStringExample str = new InputStreamToStringExample(); 
       responseServer = str.getStringFromInputStream(inputStream); 
       Log.d("response", "response -----" + responseServer); 

       //Get the instance of JSONArray that contains JSONObjects 
       // postData(responseServer); 

       JSONObject jsonRootObject = new JSONObject(responseServer); 
       JSONArray jsonArray = jsonRootObject.optJSONArray("Hotel_details"); 

       //Iterate the jsonArray and print the info of JSONObjects 
       for (int i1 = 0; i1 < jsonArray.length(); i1++) { 
        try { 


         JSONObject jsonObject = jsonArray.getJSONObject(i1); 

         Movie movie = new Movie(); 

         movie.setHotelid1(jsonObject.optString("hotel_id").toString()); 
         movie.setHotelname1(jsonObject.optString("hotel_name").toString()); 
         hotelNames.add(jsonObject.optString("hotel_name").toString()); 
         movieList.add(movie); 


         System.out.println("movie list" + movieList); 

         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 

           Adapter = (new ArrayAdapter<String>(Edit_room.this, android.R.layout.simple_spinner_dropdown_item, hotelNames)); 
           mySpinner.setAdapter(Adapter); 
           Adapter.notifyDataSetChanged(); 

           mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

            @Override 
            public void onItemSelected(AdapterView<?> arg0, 
                   View arg1, int position, long arg3) { 
             // TODO Auto-generated method stub 
             // Locate the textviews in activity_main.xml 
             // Set the text followed by the position 
             hotelid= (movieList.get(position).getHotelid1()); 
             System.out.println("name--"+hotelid); 


             new AsyncT1().execute(hotelid); 

             } 

            @Override 
            public void onNothingSelected(AdapterView<?> arg0) { 
             // TODO Auto-generated method stub 
            } 
           }); 
          } 
         }); 


        } 
        catch (JSONException e) { 

         e.printStackTrace(); 
        } 


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

     @Override 
     protected void onPostExecute(String aVoid) { 
      super.onPostExecute(aVoid); 


     } 
    } 

class AsyncT1 extends AsyncTask<String, Void, String> { 
     @Override 
     protected String doInBackground(String... params) { 

      // http://airbnb.abservetech.com/demo/public/mobile/hotelroom/roomid?hotel_id=79 

      HttpClient httpclient = new DefaultHttpClient(); 
      HttpPost httppost = new HttpPost("http://airbnb.abservetech.com/demo/public/mobile/hotelroom/show"); 
      SharedPreferences prefs = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE); 
      String userID = prefs.getString("userid", null); 
      System.out.println("userID---"+userID); 

      /*hotel_id&room_type&room_prize&is_active&available_status&adults_count&room_count&room_images& 
        room_desc&room_name&room_footage&General&Services&Food_Beverages&Outdoors&Activities& 
        Dining&Media_Entertainment&Kitchen&Others*/ 
      try { 
       // Add your data 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("hotel_id", hotelid)); 

       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       Log.e("mainToPost", "mainToPost" + nameValuePairs.toString()); 


     /* execute */ 

       // Execute HTTP Post Request 
       HttpResponse response = httpclient.execute(httppost); 
       InputStream inputStream = response.getEntity().getContent(); 
       InputStreamToStringExample str = new InputStreamToStringExample(); 
       responseServer = str.getStringFromInputStream(inputStream); 
       Log.d("response", "viewroomresponse -----" + responseServer); 

       JSONObject jsonRootObject = new JSONObject(responseServer); 
       JSONArray jsonArray = jsonRootObject.optJSONArray("view_room_details"); 

       //Iterate the jsonArray and print the info of JSONObjects 
       for (int i1 = 0; i1 < jsonArray.length(); i1++) { 
        try { 


         JSONObject jsonObject = jsonArray.getJSONObject(i1); 


         Movie movie = new Movie(); 


         // movie.setViewRoomtype(jsonObject.optString("room_type").toString()); 
         movie.setViewRoomprice(jsonObject.optString("room_prize").toString()); 
         movie.setViewIsActive(jsonObject.optString("is_active").toString()); 
         movie.setViewAvailablestatus(jsonObject.optString("available_status").toString()); 
         movie.setViewAdultcount(jsonObject.optString("adults_count").toString()); 
         movie.setViewRoomcount(jsonObject.optString("room_count").toString()); 
         movie.setViewRoomdesc(jsonObject.optString("room_desc").toString()); 
         movie.setViewRoomname(jsonObject.optString("room_name").toString()); 
         movie.setViewRoomfootage(jsonObject.optString("room_footage").toString()); 
         RoomNames.add(jsonObject.optString("room_type").toString()); 
         movieList.add(movie); 




         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
//        ArrayAdapter<String> Adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,RoomNames); 
//        Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
//        Adapter.notifyDataSetChanged(); 
//        mySpinner1.setAdapter(Adapter); 



           Adapter1 =(new ArrayAdapter<String>(Edit_room.this, android.R.layout.simple_spinner_dropdown_item, RoomNames)); 
           if(Adapter1!=null){ 
            Adapter1.notifyDataSetChanged(); 

            mySpinner1.setAdapter(Adapter1); 

           } 
           else{ mySpinner1.setAdapter(Adapter1);} 


           mySpinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

            @Override 
            public void onItemSelected(AdapterView<?> arg0, 
                   View arg1, int position, long arg3) { 
             // TODO Auto-generated method stub 
             // Locate the textviews in activity_main.xml 
             // Set the text followed by the position 

             hotelid= (movieList.get(position).getHotelid1()); 

             room_price.setText(movieList.get(position).getViewRoomprice()); 
             description.setText(movieList.get(position).getViewRoomdesc()); 
             adult_count.setText(movieList.get(position).getViewAdultcount()); 


            } 

            @Override 
            public void onNothingSelected(AdapterView<?> arg0) { 
             // TODO Auto-generated method stub 
            } 
           }); 
          } 
         }); 

        } 
        catch (JSONException e) { 

         e.printStackTrace(); 
        } 


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

     @Override 
     protected void onPostExecute(String aVoid) { 
      super.onPostExecute(aVoid); 


     } 
    } 

`

+0

Schreiben Sie mySpinner.setOnItemSelectedListener stattdessen in MainActivity. –

+0

danke für ur answer, aber es funktioniert nicht – sri

Antwort

Verwandte Themen