XML с сервера для заполнения Spinner - PullRequest
0 голосов
/ 25 июля 2011

Я бы хотел, чтобы счетчик заполнялся с сервера MySQL, веб-сайт является PHP и может быть отформатирован для отправки файла XML или JSON.

Есть ли способ заполнить счетчик этой информацией? Я могу сохранить файл в памяти, но как мне прочитать его на счетчике?

Должен ли файл быть сохранен как файл настроек, а затем прочитан таким образом?

Любая помощь будет оценена.

спасибо

Ответы [ 4 ]

1 голос
/ 28 июля 2011

Народ,

После долгих поисков, попыток, испытаний и множества других вещей я ответил на свой вопрос.

Это что-то, что может быть Doh!отвечаю за программистов, но я не программист, я учусь и делаю это как школьный проект, поэтому мои знания Java даже не могут быть названы «базовыми».

Это ответ на мойсобственный вопрос;

String CountryName = preferences.getString("country name", null);
List<String> lCounties = Arrays.asList(Counties(CountryName).split(","));
CharSequence[] csCounties = lCounties.toArray(new CharSequence[lCounties.size()]);

final Spinner sCounty = (Spinner) findViewById(R.id.county);    
ArrayAdapter<CharSequence> aCounty = new ArrayAdapter<CharSequence>(
        this, android.R.layout.simple_spinner_item,csCounties);
aCounty.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sCounty.setAdapter(aCounty);
sCounty.setSelection(preferences.getInt("county",0));
sCounty.setOnItemSelectedListener(new OnItemSelectedListener(){
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){
      int iCounty = sCounty.getSelectedItemPosition();
      String CountyName = sCountry.getItemAtPosition(arg2).toString();
      SharedPreferences.Editor editor = preferences.edit();
      editor.putString("county name", CountyName);
      editor.putInt("county", iCounty);
      editor.commit();

      //Refresh Page is county has changed
      if (oCounty != iCounty){ refresh(); }
    }
    public void onNothingSelected(AdapterView<?> arg0) {}
  });

Теперь это объяснение (насколько я понимаю ...)

Сначала я читаю страну с другого счетчика (у меня «несколько» счетчиков, соединенных вместе)

String CountryName = preferences.getString("country name", null);

Затем я использую эту информацию для вызова подкласса (я тоже могу опубликовать это).Этот подкласс связывается с сервером, чтобы создать запрос MySQL и получить необходимую информацию;в этом случае округа (или штаты) для данной страны, список получен как state1, state2, state3, [это было отформатировано на PHP на сервере, чтобы помочь]

List<String> lCounties = Arrays.asList(Counties(CountryName).split(","));
CharSequence[] csCounties = lCounties.toArray(new CharSequence[lCounties.size()]);

Следующие строкикода - это фактически Spinner, в сети есть много информации о счетчике, поэтому я не буду объяснять многое из этого.

Счетчик считывает сохраненную информацию, используя эту строку;

sCounty.setSelection(preferences.getInt("county",0));

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

Затем я сохраняю выбор, я сохраняю как имя, так и указатель.Имя сохраняется для завершения URL-адреса при загрузке страницы и сохранении указателя, потому что Spinner, похоже, любит указатели.

  SharedPreferences.Editor editor = preferences.edit();
  editor.putString("county name", CountyName);
  editor.putInt("county", iCounty);
  editor.commit();

Последнее, что я делаю, - сравнение, переменная oCounty - эточитать при загрузке страницы, он просто читает файл preference и сохраняет значение в oCounty (округ оригинал), если имя округа изменяется, то он вызывает refresh(), этот подкласс обновляет страницу.[Это тоже было очень сложно для меня собрать]

  //Refresh Page is county has changed
  if (oCounty != iCounty){ refresh(); }

Теперь все работает так, как только страна выбрана из списка, страница переходит на сервер, загружает округа /штаты для страны и обновили страницу, таким образом загрузив значения на счетчик, если страна изменится, процесс снова загрузит округа / штаты.

Тот же код используется с округами / штатами для загрузкигорода, я просто изменил имена переменных.

Я уверен, что у программистов есть более хороший, быстрый и быстрый способ сделать это, но это мои 2 цента о том, как заполнить счетчики информацией, хранящейся в базе данных MySQL.на сервере.

С уважением;Рамона

0 голосов
/ 03 января 2018

Back-конец

Состоит из базы данных Mysql и веб-сервера.

Краткое описание шагов:

  1. Создать базу данных mysql
  2. Создать файл конфигурации, чтобы установить соединение между нашей базой данных и веб-сервером (php)
  3. Создайте скрипт php, в котором будет размещен метод, который будет запрашивать базу данных, перейдя по ссылке ниже.

Фронтальный

  1. Создайте Activity_main.xml, добавьте элементы управления TextView и Spinner в activity_main.xml.
  2. Откройте класс MainActivity, создайте путь Android к серверу с помощью метода запроса, который соединяется с сервером, чтобы получить выходные данные сервера и преобразовать его в объект ответа.
  3. Создание java-файла, который будет служить классом сущностей для хранения элементов блесны.
  4. Создание настраиваемого BaseAdapter для привязки удаленного источника данных к элементам счетчика.
  5. Настройка Gradle Build, чтобы включить зависимости проекта в приложение gradle.build.
  6. Настройте файл Manifest.xml так, чтобы он включал пользовательские права доступа к файлу Manifest.xml. Объясняется, что Интернет должен выполнять сетевой вызов, поскольку приложению требуется интернет. Полный пример: Как загрузить спиннер Android со значениями базы данных php mysql
0 голосов
/ 25 июля 2011

Да, Spinner может быть заполнен с выхода проанализированного XML / JSON

ArrayAdapter<String> adapter = new ArrayAdapter<String>(Map.this.getApplicationContext(), android.R.layout.simple_spinner_item, HERE-GOES-PARSED-ARRAY-OF-JSON-or-XML);
                        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spin.setAdapter(adapter);
0 голосов
/ 25 июля 2011

Сначала проанализируйте ваш XMl или JSON. затем создайте список или массив данных, которые будут показаны в счетчике. передать данные на адаптер счетчика.

Пример

Spinner sp = (Spinner) findViewById(R.id.spnContactTypes);

        String numbers[] = { "ONE", "TWO" }; // data that you got from xml or JSON
        ArrayAdapter<String> adapter; = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, numbers);
        sp.setAdapter(adapter);
...