从json数据/数组创建微调器选项

时间:2011-08-18 03:28:01

标签: java android json spinner

1。我的问题:如何获取我的JSON数据并将其解析为我可以在我的微调器中使用的数组。

以下是我的json数据:

[["Mike Test 1"],["Mike Test 2"],["hello world"],["TEST MIKE 4"],["TEST MIKE 6"],["aliens,crazy stuff"],["Alien"],["american flags,flags"]]

我的脚本调用一个获取数据的函数。我知道这是有效的,因为我已经烘烤了返回值。然后它应循环并将值分配给在微调器中使用的新数组。

以下是我的java:

  Spinner areaspinner;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    JSONArray jsonArray;

    try {
    //SETTINGS AND METHOD THAT GETS THE DATA
        String spinnerContentType = "styles";
        String spinnerURL = "getStyles.php";
        String spinner_data =  DataCall.getJSON(spinnerURL,spinnerContentType); 

     //NEW JSONArray OBJECT
        jsonArray = new JSONArray(spinner_data);

        final String[] array_spinner = new String[jsonArray.length()]; 

        int show_total = jsonArray.length();
        //CHECK HOW MANY ITEMS ARE RETURNED
        Toast.makeText(flash_tattoo.this, show_total + "test", Toast.LENGTH_LONG).show();

        for (int i=0; i<jsonArray.length(); i++)
        {
            //LOOP AND ASSIGN TO ARRAY
            String styleValue = jsonArray.getJSONArray(0).getString(i); 
            array_spinner[i] = styleValue;

        }
        ArrayAdapter<String> adapter = 
            new ArrayAdapter<String> (this, 
                    android.R.layout.simple_spinner_item,array_spinner);

        adapter.setDropDownViewResource(R.layout.spinner_layout);
        areaspinner.setAdapter(adapter);

    }catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

这是我的微调器布局:

<?xml version="1.0" encoding="utf-8"?>

<TextView 
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/text1" 
  style="?android:attr/spinnerDropDownItemStyle" 
  android:singleLine="true" 
  android:layout_width="fill_parent" 
  android:layout_height="?android:attr/listPreferredItemHeight"
  android:textColor="#e70909"
/>

1 个答案:

答案 0 :(得分:2)

对我来说,areaspinner似乎是null

要添加一个微调器,你可以在main.xml中使用这样的东西。

<Spinner android:id="@+id/mySpinner"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:prompt="@string/mySpinnerText" />

然后在onCreate()

Spinner sp = (Spinner) findViewById(R.id.mySpinner);
        ArrayAdapter<String> adapter = 
                new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, array_spinner);       
        adapter.setDropDownViewResource(R.layout.spinner_layout);
        sp.setAdapter(adapter);