首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据其他微调器中的选择填充微调器

根据其他微调器中的选择填充微调器
EN

Stack Overflow用户
提问于 2016-05-03 18:25:20
回答 2查看 245关注 0票数 0

我正在尝试从服务器获取数据到微调器中,我的json对象是

代码语言:javascript
复制
{"result":{"AndhrPradesh":["Jayamahal","ABC","JP nagar"],"Mumbai":["XYZ","PQR"],"Pune":["123","Hi"]}}

例如,如果从一个微调器中选择孟买,我想在另一个微调器中显示XYZ,PQR,请帮助我。

EN

回答 2

Stack Overflow用户

发布于 2016-05-03 18:41:54

首先解析json数据,如下所示

代码语言:javascript
复制
JSONObject jsonObject = response.getJSONObject("data");
JSONArray cityName= jsonObject.getJSONArray("AndhrPradesh")
for(i=0;i<cityName.length();i++){
//your inner string of the Array
}

然后

代码语言:javascript
复制
citynameSpinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //here set the values to another spinner
            }
        });
票数 0
EN

Stack Overflow用户

发布于 2016-05-04 13:44:56

请使用此代码片段

代码语言:javascript
复制
public class SpinnerFilterActivity extends AppCompatActivity {
private ArrayAdapter<String> mArrayAdapter;
private Spinner mMainSPN;
private ArrayList<String> mSpinnerArray;
private Map<String,ArrayList<String>> innterDataMap;
private Spinner mInnerSPN;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSpinnerArray = new ArrayList<String>();
    innterDataMap = new HashMap<String, ArrayList<String>>();
    mMainSPN = (Spinner) findViewById(R.id.spn_main);
    mInnerSPN = (Spinner) findViewById(R.id.spn_inner);

    mMainSPN.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String key = mSpinnerArray.get(position);
            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(SpinnerFilterActivity.this,android.R.layout.simple_spinner_item,innterDataMap.get(key));
            mInnerSPN.setAdapter(arrayAdapter);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });
    parseJson();
}

private void parseJson() {
    String s= "{\"result\":{\"AndhrPradesh\":[\"Jayamahal\",\"ABC\",\"JP nagar\"],\"Mumbai\":[\"XYZ\",\"PQR\"],\"Pune\":[\"123\",\"Hi\"]}}\n";
    try {
        JSONObject jsonObject = new JSONObject(s);
        JSONObject obj= jsonObject.getJSONObject("result");
        Iterator<String> stringIterator = obj.keys();
        while (stringIterator.hasNext()){
            String key = stringIterator.next();
            mSpinnerArray.add(key);
            JSONArray jsonArray = obj.getJSONArray(key);
            ArrayList<String> innerList = new ArrayList<>();
            for (int i=0;i<jsonArray.length();i++){
                innerList.add(String.valueOf(jsonArray.get(i)));
            }
            innterDataMap.put(key,innerList);
        }
        populateDataInSpinner();
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

private void populateDataInSpinner() {
    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,mSpinnerArray);
    mMainSPN.setAdapter(arrayAdapter);
  }
}

在这段代码中,我在两个字段中保存了一个数据,一个是I mSpinnerArray,用于显示aster列表,另一个是map,其中内部列表代表键作为父值保存。每当调用onOptionItemSelected方法时,我都会代表主列表中的选定项从映射中获取内部数据列表,因为它是innerMap数据中的键。我希望我说得够清楚了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37001625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档