我正在开发Android应用程序。为此我正在制作一个活动,您可以选择您所在的国家/地区,然后选择该国家/地区的某个地点我有一个微调器,其中包含所有可用国家/地区的列表。现在,我想要它做的是获取已选择的国家/地区,然后过滤我所选择的国家/地区的项目列表。然后它应该将所选国家的景点放入不同的旋转器中。为了清楚起见,国家列表只是一个国家列表,点列表如下:
Country1 - Spot1
Country1 - Spot2
Country2 - Spot1
Country2 - Spot2
等等。
这就是我认为代码应该像:
我尝试使用以下代码实现此目的:
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);
}
但它有几个错误:
我仍然相对较新的Android,并且在使用它时遇到了很多麻烦。有人可以帮帮我吗?
答案 0 :(得分:3)
您的代码中存在很多小错误:
arraylist
中的元素,请使用get(position)
方法这是您的代码更新,它应该工作或可能需要一些调整
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);
}
答案 1 :(得分:0)
您的代码中有多处错误。
首先,ArrayList的方法addAll
必须将Collection
作为参数。您传递的是Android数组ID R.array.spots_array
;请记住Android ids是整数。
从Android资源获取字符串数组的常用方法是(在一个活动中):
String[] myArray = getResources().getStringArray(R.array.spots_array);
第二个错误:您应该通过调用方法ArrayList
来访问get(position)
元素,而不是直接(arraylist(position)
)。类似于arraylist.get(position)
。
第三个错误:
arraylist2.add(arraylist(i).string.substring(string.lastIndexOf('-') + 1));
应该只是arraylist2.add(arraylist.get(i));
,用于将一个列表元素添加到另一个列表元素。
ArrayLists
的更多内容here。