如何从spinner Android获取String

时间:2013-12-18 05:57:12

标签: java android json spinner

ihave json,我把我的旋转器放在下面:

   {
    "data": [
        {
            "kode": "1",
            "text": "No Tujuan"
        },
        {
            "kode": "2",
            "text": "Broadcast Admin PUPI"
        },
        {
            "kode": "3",
            "text": "Broadcast TIM PUPI"
        },
        {
            "kode": "4",
            "text": "Broadcast Semua PUPI"
        },
        {
            "kode": "5",
            "text": "Broadcast Ketua KUB"
        },
        {
            "kode": "6",
            "text": "Broadcast Operator PUPI"
        },
        {
            "kode": "7",
            "text": "DJPT - Executive"
        }
    ]
}

当在微调器中显示时,它显示“文本”但是当用户点击微调器时,它会给出“kode”,但每次我点击我的微调器,它只是给“文本”而不​​是“kode”,这就是我的方式加载我的微调器:

public class SpinnerType extends AsyncTask<String, String, String>{

    @Override
    protected void onPreExecute(){
        super.onPreExecute();
        dialog = new ProgressDialog(Modul_sms_broadcast.this);
        dialog.setTitle("");
        dialog.setMessage("melakukan pengambilan data...");
        dialog.show();
    }


    protected String doInBackground(String... args) {
        String url ="http://10.10.2";
         JSONArray data = null; 
    try {
        JSONParser jParser = new JSONParser();
        JSONObject json = jParser.getJSONFromUrl(url);
        data = json.getJSONArray(real_data);
        for(int i = 0; i < data.length(); i++){
            JSONObject c = data.getJSONObject(i);

            // Storing each json item in variable
            r1 = c.getString(real_rel1);
            r2 = c.getString(real_rel2);
            tipe_sms.add(new spin(r1, r2));

            System.out.println(r2);
            System.out.println(r1);
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return null;
}

    @Override
    protected void onPostExecute(String file_url){
        dialog.dismiss();
         ArrayAdapter spinnertype = new ArrayAdapter(getApplicationContext(),R.layout.spinner_style, tipe_sms);
         spinnertype.setDropDownViewResource(android.R.layout.simple_list_item_1);
         spinner1.setAdapter(spinnertype);

            code=spinner1.getSelectedItem().toString();
            if(code.equals("1")){
                nomor_sms.setFocusable(false); 
                nomor_sms.setClickable(false);
            }
            else {
                nomor_sms.setFocusable(true); 
                nomor_sms.setClickable(true);
            }

    }
}
public class spin {
      String kode;
      String text;

      public spin(String n, String c) {
        kode = n;
        text = c;
      }

      public String toString() { 
        return text; 
      }
    }

我的代码是否有任何错误?我希望有人能帮助我解决我的问题。

2 个答案:

答案 0 :(得分:2)

tipe_sms你可以用于任何文本。对于文本,你可以在微调器上使用onItemSelectedListener中的位置,然后你就可以获得该位置的旋转对象,现在你可以轻松地得到kode或文本了。你明白我在说什么。

答案 1 :(得分:2)

由于以下原因仅返回文字:

public String toString() { 
        return text; 
      }

编辑:

只需更改为:

public String toString() { 
        return text+" "+kode; 
      }

从所选项目中获取代码:

code=spinner1.getSelectedItem().toString();
int start = code.lastIndexOf(' ');
String codeval = code.substring(start+1);