Android 使用数组中的特定项填充微调器
我正在为Android开发一个应用程序。为此,我正在做一个活动,你选择你的国家,然后在该国的一个地点。我有一个微调器,其中包含所有可用国家/地区的列表。现在,我想让它做的是获取已选择的国家,然后过滤以已选择国家开始的项目的点列表。然后,它应该将所选国家的景点放在不同的微调器中。为了清楚起见,国家列表只是一个国家列表,而景点列表如下所示:Android 使用数组中的特定项填充微调器,android,arraylist,spinner,android-arrayadapter,Android,Arraylist,Spinner,Android Arrayadapter,我正在为Android开发一个应用程序。为此,我正在做一个活动,你选择你的国家,然后在该国的一个地点。我有一个微调器,其中包含所有可用国家/地区的列表。现在,我想让它做的是获取已选择的国家,然后过滤以已选择国家开始的项目的点列表。然后,它应该将所选国家的景点放在不同的微调器中。为了清楚起见,国家列表只是一个国家列表,而景点列表如下所示: Country1-Spot1 Country1-Spot2 国家2-Spot1 Country2-Spot2 等等 我认为代码应该是这样工作的: 从微调器
- Country1-Spot1
- Country1-Spot2
- 国家2-Spot1
- Country2-Spot2
- 从微调器1获取所选国家/地区
- 创建一个包含斑点的新阵列列表
- 创建第二个空的ArrayList
- 对于包含斑点的ArrayList的每个条目,检查其是否以所选国家/地区开头
- 如果是,请将其添加到第二个ArrayList
- 完成后,使用第二个ArrayList生成ArrayAdapter
- 将此阵列适配器设置为微调器2
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String selectedCountry = parent.getItemAtPosition(pos).toString();
ArrayList<CharSequence> arraylist = new ArrayList<CharSequence>();
arraylist.addAll(R.array.spots_array);
ArrayList<CharSequence> arraylist2 = new ArrayList<CharSequence>();
for (i=0; i<arraylist.size(); i++) {
String delimiter = " - ";
if ((arraylist(i).split(delimiter)).equals(selectedCountry)) {
arraylist2.add(arraylist(i).string.substring(string.lastIndexOf('-') + 1));
}
}
ArrayAdapter<CharSequence> arrayAdapter2 = ArrayAdapter.createFromResource(this, arraylist2<CharSequence>, android.R.layout.simple_spinner_item);
arrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(arrayAdapter2);
spinner2.setOnItemSelectedListener(this);
}
public void已选择(AdapterView父视图、视图视图、整数位置、长id){
字符串selectedCountry=parent.getItemAtPosition(pos.toString();
ArrayList ArrayList=新的ArrayList();
arraylist.addAll(R.array.spots\u数组);
ArrayList ArrayList 2=新的ArrayList();
对于(i=0;i,您的代码中有很多小错误:
- 要访问
arraylist
中的元素,请使用get(position)
方法
- 添加“spot_数组”时,实际上是添加了资源的id,而不是数组本身(请参阅)
这里是你的代码更新,它应该工作或可能需要一些调整
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String selectedCountry = parent.getItemAtPosition(pos).toString();
List<CharSequence> arraylist = new ArrayList<CharSequence>();
arraylist.addAll(Arrays.asList(getResources().getTextArray(R.array.spots_array)));
List<CharSequence> arraylist2 = new ArrayList<CharSequence>();
String delimiter = " - ";
for (int i=0; i<arraylist.size(); i++) {
String country = arraylist.get(i).toString();
if (country.contains(selectedCountry)) {
arraylist2.add(country.substring(country.lastIndexOf('-') + 2));
}
}
ArrayAdapter<CharSequence> arrayAdapter2 = ArrayAdapter.createFromResource(this, android.R.id.text1, android.R.layout.simple_spinner_item);
arrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(arrayAdapter2);
spinner2.setOnItemSelectedListener(this);
}
public void已选择(AdapterView父视图、视图视图、整数位置、长id){
字符串selectedCountry=parent.getItemAtPosition(pos.toString();
List arraylist=新建arraylist();
addAll(Arrays.asList(getResources().getTextArray(R.array.spots_array));
List ArrayList 2=新建ArrayList();
字符串分隔符=“-”;
对于(int i=0;i,代码中有很多小错误:
- 要访问
arraylist
中的元素,请使用get(position)
方法
- 添加“spot_数组”时,实际上是添加了资源的id,而不是数组本身(请参阅)
这里是你的代码更新,它应该工作或可能需要一些调整
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String selectedCountry = parent.getItemAtPosition(pos).toString();
List<CharSequence> arraylist = new ArrayList<CharSequence>();
arraylist.addAll(Arrays.asList(getResources().getTextArray(R.array.spots_array)));
List<CharSequence> arraylist2 = new ArrayList<CharSequence>();
String delimiter = " - ";
for (int i=0; i<arraylist.size(); i++) {
String country = arraylist.get(i).toString();
if (country.contains(selectedCountry)) {
arraylist2.add(country.substring(country.lastIndexOf('-') + 2));
}
}
ArrayAdapter<CharSequence> arrayAdapter2 = ArrayAdapter.createFromResource(this, android.R.id.text1, android.R.layout.simple_spinner_item);
arrayAdapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(arrayAdapter2);
spinner2.setOnItemSelectedListener(this);
}
public void已选择(AdapterView父视图、视图视图、整数位置、长id){
字符串selectedCountry=parent.getItemAtPosition(pos.toString();
List arraylist=新建arraylist();
addAll(Arrays.asList(getResources().getTextArray(R.array.spots_array));
List ArrayList 2=新建ArrayList();
字符串分隔符=“-”;
对于(int i=0;i您的代码中有几个错误
首先,ArrayList的方法addAll
必须将集合
作为参数。您正在传递一个Android数组idR.array.spots\u array
;请记住Android id是整数
从Android资源中获取字符串数组的通常方法是(在活动中):
String[]myArray=getResources().getStringArray(R.array.spots_array);
第二个错误:应该通过调用方法get(position)
来访问ArrayList
元素,而不是直接(ArrayList(position)
)。类似于ArrayList.get(position)
第三个错误:
arraylist2.add(arraylist(i).string.substring(string.lastIndexOf('-')+1));
应该是arraylist2.add(arraylist.get(i));
用于将一个列表元素添加到另一个列表元素
有关ArrayLists的详细信息可以找到。您的代码中有几个错误
首先,ArrayList的方法addAll
必须将集合
作为参数。您正在传递一个Android数组idR.array.spots\u array
;请记住Android id是整数
从Android资源中获取字符串数组的通常方法是(在活动中):
String[]myArray=getResources().getStringArray(R.array.spots_array);
第二个错误:应该通过调用方法get(position)
来访问ArrayList
元素,而不是直接(ArrayList(position)
)。类似于ArrayList.get(position)
第三个错误:
arraylist2.add(arraylist(i).string.substring(string.lastIndexOf('-')+1));
应该是arraylist2.add(arraylist.get(i));
用于将一个列表元素添加到另一个列表元素
有关ArrayList的详细信息可以找到。只是一个小的更正。“country.lastIndexOf('-')+1”应该是“country.lastIndexOf('-')+2”,否则它也会包括'-'后面的空格。谢谢你的回复,你真的帮了很多忙!它现在起作用了!只是一个小的更正。“country.lastIndexOf('-'))+1'应为'country.lastIndexOf('-'))+2',否则它也会包含“-”之后的空格。谢谢你的回复,你真的帮了大忙!现在可以了!这里不允许使用页脚,特别是那些为网站做广告的页脚。我已经从你的其余答案中删除了这些页脚,但我要求你以后不要添加这些页脚。这里不允许使用页脚,尤其是页脚我已经从你剩下的答案中删除了这些,但是我要求你以后不要添加这些。