我创建了这个小应用程序,向用户询问城市和区域。一旦用户进入城市,区域自动建议应该得到改进并仅建议该特定城市中存在的区域。我使用一个名为“城市”的城市阵列和许多其他阵列,用于存储相应城市的不同城市的区域。 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(需要更长的代码来处理所有城市的情况)或者有一个内置的类,功能相同吗?
答案 0 :(得分:0)
简单的解决方案是为text1添加onTextChange。 在它的afterTextChanged函数init text2中使用正确的适配器(在等之前检查它的值)。
更正确的解决方案是为text2扩展适配器并实现一个过滤器,该过滤器将返回您需要的正确区域。请看这里了解更多信息 https://stackoverflow.com/a/17862403/1393632。使用您自己的逻辑替换接近Web的过滤器