2016-10-05 6 views
-2

Как получить данные, которые хранятся в формате JSON на сервере MySQL, работающем на моем локальном хосте, в заселяющие прядильщики в приложении Android?Как получить данные с сервера в spinner в студии android

+0

Объясните свою идею более подробно, или они дадут вам много невздок :) просто совет^_ ^, надеюсь, вы найдете свое решение –

+0

у вас уже есть два неприятия, Go Faster –

+0

@KhalilBz сделал редактирование моего вопроса , Вы сейчас задаете мне вопрос? –

ответ

0

Я бы начал с этого руководства here на заселяющих прядильщиках в целом.

Для анализа json-данных я бы использовал JSONObject. Взгляните на this tutorial.

1

Выполняйте изменения в соответствии с вами. Я отправляю свой собственный рабочий код.

, например.

Это ваш кок в XML:

<Spinner 
         android:id="@+id/spinner_vehciles" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         /> 

Следующие шаги в классе:

private Spinner spinner_vehciles; 
spinner_vehciles = (Spinner) findViewById(R.id.spinner_vehciles); 

Вы должны реализовать один интерфейс, например,

public class YourActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener 

два метода присутствуют в этом интерфейсе

@Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     Spinner spinner = (Spinner) parent; 

     if (spinner.getId() == R.id.spinner_vehciles) { 
      SpinnerVehicleList vehicle = listVehicles.get(position); 
      str_vehicle = vehicle.getVehicleName(); 
      str_vehicle_id = vehicle.getVehicleId(); 
     } 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 

SpinnerVehicleList мой класс модели:

public class SpinnerVehicleList { 
    private String vehicleId; 
    private String vehicleName; 

     public SpinnerVehicleList(String vehicleId, String vehicleName) { 
      this.vehicleId = vehicleId; 
      this.vehicleName = vehicleName; 
     } 

     public String getVehicleName() { 
      return vehicleName; 
     } 

     public void setVehicleName(String vehicleName) { 
      this.vehicleName = vehicleName; 
     } 

     public String getVehicleId() { 
      return vehicleId; 
     } 

     public void setVehicleId(String vehicleId) { 
      this.vehicleId = vehicleId; 
     } 
    } 

listVehicles мой ArrayList:

private ArrayList<SpinnerVehicleList> listVehicles = new ArrayList<>(); 

Теперь создаем адаптер, как го является:

public class SpinnerVehicleListAdapter extends BaseAdapter { 

    private List<SpinnerVehicleList> list_vehicles = new ArrayList<SpinnerVehicleList>(); 
    private LayoutInflater layoutInflater = null; 
    private Context context; 

    public SpinnerVehicleListAdapter(Activity context, List<SpinnerVehicleList> list_vehicles) { 

     this.list_vehicles = list_vehicles; 
     this.context = context; 
     layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return list_vehicles.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    public class ViewHolder 
    { 
     TextView textView_vehicleName; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder viewHolder = new ViewHolder(); 
     View view = convertView; 
     if (view == null) 
     { 
      view = layoutInflater.inflate(R.layout.spinner_vehicle_item, null); 
      viewHolder.textView_vehicleName = (TextView) view.findViewById(R.id.textView_vehicleName); 
      view.setTag(viewHolder); 
     } 
     else 
     { 
      viewHolder = (ViewHolder) view.getTag(); 
     } 

     SpinnerVehicleList vehicles = list_vehicles.get(position); 
     viewHolder.textView_vehicleName.setText(vehicles.getVehicleName()); 
     return view; 
    } 
} 

Прими переменный адаптер для инициализации адаптера:

private SpinnerVehicleListAdapter spinnerVehicleListAdapter; 

Создать один метод для сервера getDataFrom. для например, в моем случае:

public void getVehicleList() { 
    progressDialog.show(); 

    StringRequest sr = new StringRequest(Request.Method.POST, AppUtil.URL_Main + AppUtil.URL_ListVehicle, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      progressDialog.dismiss(); 
      try { 
       JSONObject jsonObject = new JSONObject(response); 
       if (jsonObject.get("status").toString().trim().equals("true")) { 

        if (listVehicles.size() > 0) { 
         listVehicles.clear(); 
        } 

        listVehicles.add(new SpinnerVehicleList("0", "Select Your Vehicle")); 
        JSONArray jsonArray = jsonObject.getJSONArray("data"); 
        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject jsonObject1 = jsonArray.getJSONObject(i); 

         String vehicleId = jsonObject1.getString("vehicleId"); 
         String vehicleName = jsonObject1.getString("make"); 

         listVehicles.add(new SpinnerVehicleList(vehicleId, vehicleName)); 
        } 
        spinnerVehicleListAdapter.notifyDataSetChanged(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      try { 
       progressDialog.dismiss(); 
       Toast.makeText(BookingFormActivity.this, "Check Internet Connection !", Toast.LENGTH_SHORT).show(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("userId", values.get_UserID()); 
      params.put("token", values.get_Token()); 
      return params; 
     } 
    }; 
    sr.setRetryPolicy(new DefaultRetryPolicy(60 * 1000, 0, 
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    AppController.getInstance().addToRequestQueue(sr); 
} 

Последний является вызов метода, который получает dataFromServer() и сохранить значение для адаптера. Вы можете написать этот код в методе onResume()

@Override 
    protected void onResume() { 
     super.onResume(); 
     getVehicleList(); 

     spinnerVehicleListAdapter = new SpinnerVehicleListAdapter(this, listVehicles); 
     spinner_vehciles.setAdapter(spinnerVehicleListAdapter); 
     spinner_vehciles.setOnItemSelectedListener(this); 

    } 

Thats it.

Смежные вопросы