使用微调器中的位置无法获得正确的值

时间:2017-03-11 07:24:23

标签: android android-sqlite android-spinner

我创建了2个微调器,说城市和位置。我已将城市和位置数据保存在本地数据库中,并从本地数据库中获取城市并显示它们。

现在,我的问题是我添加了#34;选择城市"位于数组列表的第0位。当我选择任何城市并运行命令来获取基于城市的位置时,我会根据位置得到错误的位置。

我无法获得正确的位置。

//代码

dumy = new Dumy(this);
cityAreaModelsList = dumy.getOnlyCities();
cityList = new ArrayList<String>();
cityList.add(0, "Select City");

for (int i = 0; i < cityAreaModelsList.size(); i++) {
    cityList.add(cityAreaModelsList.get(i).getCityName());
}

// spinner code

select_city.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        if (position == 0) {
            Log.e(TAG, "Select City " );
        } else {
            cityId = (String)  cityAreaModelsList.get(position).getCityId();
            Log.e(TAG, "onItemSelected: "+cityId );
        }
    }
}

//说我已经选择了新的德里城市id是1,但它给了我2.为什么?请帮忙

1 个答案:

答案 0 :(得分:1)

因为适配器的位置从1(仅数据部分)开始

和cityAreaModelsList正在从0访问;

尝试以下代码:

cityId = (String) cityAreaModelsList.get(position-1).getCityId();