来自Server的XML以填充Spinner

时间:2011-07-25 12:22:35

标签: android xml json spinner

我想从服务器的MySQL填充微调器,网站是PHP,可以格式化以发送XML或JSON文件。

有没有办法用这些信息填充微调器?我可以将文件保存到内存中,但是如何在微调器上读取它?

文件是否应保存为首选项文件然后以这种方式阅读?

任何帮助将不胜感激。

感谢

4 个答案:

答案 0 :(得分:1)

民间;

经过大量的观察,尝试和测试以及对其他事情进行了解读,我回答了自己的问题。

这可能是一个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并保存指针bacuase 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(); }

现在全部工作的方式是,一旦从列表中选择了一个国家/地区,页面就会转到服务器,加载国家/地区的县/州并刷新页面,从而在微调器上加载值,如果国家变化,该过程将再次加载县/州。

使用相同的代码与县/州加载城市,我改变了变量的名称。

我确信程序员可以更好,更快,更快地完成此任务,但这些是关于如何使用存储在服务器上的MySQL数据库中的iformation填充微调器的2美分。

的问候; 拉蒙

答案 1 :(得分:0)

首先解析您的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);

答案 2 :(得分:0)

是的,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);

答案 3 :(得分:-1)

返回端

这包括Mysql数据库和Web服务器。

要遵循的摘要步骤:

  1. 创建一个mysql数据库
  2. 创建配置文件以在我们的数据库和Web服务器(php)之间建立连接
  3. 创建一个php脚本,其中将包含将查询数据库的方法,请访问以下链接。
  4. <强>前端

    1. 创建activity_main.xml,在activity_main.xml中添加TextView和Spinner控件。
    2. 打开MainActivity类,使用请求方法创建到服务器的Android路径,该方法与服务器连接以获取服务器输出并将其转换为response s对象。
    3. 创建一个java文件作为实体类来保存微调器项。
    4. 创建自定义BaseAdapter以将远程数据源与微调器项绑定。
    5. 调整Gradle Build,在app gradle.build中包含projectdependencies。
    6. 调整Manifest.xml文件以包含Manifest.xml文件用户权限 - 解释为互联网以进行网络呼叫,因为应用程序需要internet.Read完整示例:How to load android spinner with php mysql database values