微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

城市列表未根据 android 中州名的选择显示

如何解决城市列表未根据 android 中州名的选择显示

您好,请在以下代码中选择州名。城市名称列表正在填充。但在选择州名称后,城市名称显示城市名称的最后一个元素。城市名称包含一个列表,但列表未按照州名称显示。根据我的邮递员回复显示州名,但未显示城市名称

谁能帮助我哪里出错了。

   if (response.isSuccessful()) {
                    Log.e("response",new Gson().toJson(response.body()));
                    GetStateMasterDataModel getStateMasterDataModel = response.body();
                    final List<StateMstrModel> getStateMasterDataModels = getStateMasterDataModel.getStateMstr();
                    for (StateMstrModel stateMstrModel : getStateMasterDataModels) {
                        StateNames = stateMstrModel.getState();
                        CityNames = stateMstrModel.getCity();
                        districtNames = stateMstrModel.getdistric();
                        StateMstrModel stateMstrModel1 = new StateMstrModel(StateNames,CityNames,districtNames);
                        stateDataList.add(stateMstrModel1);
                      //  ArrayList<String> values=new ArrayList<String>();
                        hashSet = new HashSet<String>();
                        hashSet.addAll(stateNames);
                        stateNames.clear();
                        stateNames.addAll(hashSet);
                        stateNames.add(StateNames);

                        Collections.sort(stateNames,new Comparator<String>() {
                            @Override
                            public int compare(String s1,String s2) {
                                return s1.comparetoIgnoreCase(s2);
                            }
                        });
                        CityList.add(CityNames);
                        districtNames.add(districtNames);

                    final ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
                            getApplicationContext(),R.layout.spinner_item,stateNames);
                    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    state.setAdapter(spinnerArrayAdapter);
                    spinnerArrayAdapter.notifyDataSetChanged();

                    state.setonItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
                            if(position+1>0){
                                String sp1= String.valueOf(state.getSelectedItem());
                                if(stateNames.contains(sp1)){
                                    ArrayList<String> CityList=new ArrayList<>();
                                    CityList.add(CityNames);
                                    final ArrayAdapter<String> spinnerArrayAdapter1 = new ArrayAdapter<String>(
                                            getApplicationContext(),CityList);
                                    spinnerArrayAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                    spinnerArrayAdapter1.notifyDataSetChanged();
                                    city.setAdapter(spinnerArrayAdapter1);
                                }
                            }
                        }

                        @Override
                        public void onnothingSelected(AdapterView<?> parent) {
                        }
                    });
                    }

邮递员回复

{
    "Message": "State Master List","Status": true,"StateMstr": [
        {
            "Id": "1","State": "Maharashtra","distric": "Mumbai City","City": "Mumbai"
        },{
            "Id": "8","distric": "Pune","City": "Pune"
        },{
        "Id": "13","distric": "Nagpur","City": "Nagpur"
    }
}]}

解决方法

仅显示城市名称的最后一个元素

因为您正在传递您所在城市 ArrayAdapter 中最后存储的城市名称变量。所以你需要传递城市名称列表

为每个循环创建一个数组列表

ArrayList<String> CityList=new ArrayList<>();

然后在每个循环的 ur 内的列表中添加您的城市名称

CityNames = stateMstrModel.getCity();
CityList.add(CityNames);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。