如何从android中的spinner获取选择的代码和选定的名称值

时间:2015-05-04 08:23:12

标签: android

这是我的Asynk任务,我从服务器获取数据并调用Oncreate方法

   class download extends AsyncTask<Void, Void, Void> {
            String result;

            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();

                pDialog = new ProgressDialog(RDistributor.this);
                pDialog.setTitle("CheckUser Connection");
                pDialog.setMessage("Please wait...");
                pDialog.show();
            }

            @Override
            protected Void doInBackground(Void... params) {
                // TODO Auto-generated method stub

                try {
                    result = JSONfunctions2.getJSONfromURL(URL + "?spokecode="
                            + "GUJAHM270");
                    _jarray1 = new JSONArray(result);

                    stringArray = new ArrayList<String>();
                    // stringArray.add("Select Role");
                    for (int i = 0; i <= _jarray1.length(); i++) {

                        JSONObject _obj = _jarray1.getJSONObject(i);
                        SpokeCode = _obj.getString("SpokeCode").toString();
                        DistributerCode = _obj.getString("DistributerCode")
                                .toString();
                        DistributerName = _obj.getString("DistributerName")
                                .toString();

                        stringArray.add(DistributerName);

                    }

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

                return null;
            }

            @Override
            protected void onPostExecute(Void result) {
                // TODO Auto-generated method stub

                if (_jarray1.length() == 0) {
                    showpopup("All Distributers had already been registered!");

                } else {
                    dataAdapter = new ArrayAdapter<String>(RDistributor.this,
                            R.layout.spinner_item, stringArray);
                    // ArrayAdapter<String> dataAdapter = new
                    // ArrayAdapter<String>(this,R.layout.spinner_item,
                    // stringArray);
                    dataAdapter
                            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    // set the ArrayAdapter to the spinner
                    rolespinner.setAdapter(dataAdapter);
                }
                pDialog.dismiss();
                super.onPostExecute(result);

            }
        }

这是选择的微调器和获取值。

rolespinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub

                DistributerName=rolespinner.getSelectedItem().toString();
                Toast.makeText(RDistributor.this, DistributerName, 10000).show();


            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

    }

我正在印刷中微调是从服务器来也distributerCode数据distributerName和分支从服务器,我想未来的代码时,我选择与我得到的分销商代码值,并从下拉谈到ditributorname的代码选择向下请建议我如何经销商名称我将实现这一目标。我正面临着这个问题。

2 个答案:

答案 0 :(得分:1)

我认为你需要包装一个对象来存储这些属性。

 public class Model {
   public String spokeCode;
   public String DistributerCode;
   .......
 }

 ArrayList<Model> list = new ArrayList<Model>();
 list.add(model);
 list.add(model);//
 // and so on
 //do search
 DistributerName=rolespinner.getSelectedItem().toString();
 Model searchModel;
 for (Model m : list) {
    if (m.distributerName.equals(DistributerName)) {
         searchModel = m;
         break;
    }
 }

答案 1 :(得分:1)

声明:

 HashMap<String, String> spinnerMap = new HashMap<String, String>();

for (int i = 0; i <= _jarray1.length(); i++) {

                    JSONObject _obj = _jarray1.getJSONObject(i);
                    SpokeCode = _obj.getString("SpokeCode").toString();
                    DistributerCode = _obj.getString("DistributerCode")
                            .toString();
                    DistributerName = _obj.getString("DistributerName")
                            .toString();

                    spinnerMap.put(DistributerName, DistributerCode);
                    stringArray.add(DistributerName);

                }

和spinner item-select方法更新:

rolespinner.setOnItemSelectedListener(new OnItemSelectedListener(){

    @Override
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        // TODO Auto-generated method stub

        String to=  spinnerMap.get(rolespinner.getSelectedItem());
        Toast.makeText(MainActivity.this,
            to, 10000);
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }
});

享受!!!