城市和地区的自动建议

时间:2014-03-29 19:13:15

标签: android arrays autocompletetextview

我创建了这个小应用程序,向用户询问城市和区域。一旦用户进入城市,区域自动建议应该得到改进并仅建议该特定城市中存在的区域。我使用一个名为“城市”的城市阵列和许多其他阵列,用于存储相应城市的不同城市的区域。 EX:如果选择的城市是“abc”,我有另一个名为“abc”的数组,其中包含城市abc的区域。
输入城市后,如何优化区域搜索,以便仅自动建议与输入城市对应的区域?我需要使用开关盒吗?

java文件

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_find);

    this.text1 = (AutoCompleteTextView) findViewById(R.id.city);
     String[] city = getResources().getStringArray(R.array.cities);
  ArrayAdapter<String> adapterCity = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, city);
    this.text1.setAdapter(adapterCity);
    this.text1.setThreshold(1);


     this.text2 = (AutoCompleteTextView) findViewById(R.id.area);
     String[] area = getResources().getStringArray(R.array.Agra);
     // In place of the array "Agra" the feed from text1 has to be used.
    ArrayAdapter<String> adapterArea = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, area);
    this.text2.setAdapter(adapterArea);
    this.text2.setThreshold(1);

    }

string.xml

//array for the cities
<string-array name="cities">
    <item>Agra</item>
    <item>Aurangabad</item>
    <item>Bilaspur</item>
    <item>Vraranasi</item>
    </string-array>

//城市阿格拉的区域数组

<string-array name="Agra">
    <item>Agra-HO</item>
    <item>Abc</item>
    <item>Def</item>
    <item>Ijk</item>
   </string-array>

//奥兰加巴德市的区域数组

<string-array name="Aurangabad">
    <item>Abc</item>
    <item>Def</item>
    <item>Ijk</item>
     </string-array>

我应该使用switch case(需要更长的代码来处理所有城市的情况)或者有一个内置的类,功能相同吗?

1 个答案:

答案 0 :(得分:0)

  1. 简单的解决方案是为text1添加onTextChange。 在它的afterTextChanged函数init text2中使用正确的适配器(在等之前检查它的值)。

  2. 更正确的解决方案是为text2扩展适配器并实现一个过滤器,该过滤器将返回您需要的正确区域。请看这里了解更多信息 https://stackoverflow.com/a/17862403/1393632。使用您自己的逻辑替换接近Web的过滤器