Android 使用数组中的特定项填充微调器

Android 使用数组中的特定项填充微调器,android,arraylist,spinner,android-arrayadapter,Android,Arraylist,Spinner,Android Arrayadapter,我正在为Android开发一个应用程序。为此,我正在做一个活动,你选择你的国家,然后在该国的一个地点。我有一个微调器,其中包含所有可用国家/地区的列表。现在,我想让它做的是获取已选择的国家,然后过滤以已选择国家开始的项目的点列表。然后,它应该将所选国家的景点放在不同的微调器中。为了清楚起见,国家列表只是一个国家列表,而景点列表如下所示: Country1-Spot1 Country1-Spot2 国家2-Spot1 Country2-Spot2 等等 我认为代码应该是这样工作的: 从微调器

我正在为Android开发一个应用程序。为此,我正在做一个活动,你选择你的国家,然后在该国的一个地点。我有一个微调器,其中包含所有可用国家/地区的列表。现在,我想让它做的是获取已选择的国家,然后过滤以已选择国家开始的项目的点列表。然后,它应该将所选国家的景点放在不同的微调器中。为了清楚起见,国家列表只是一个国家列表,而景点列表如下所示:

  • 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数组id
R.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数组id
R.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',否则它也会包含“-”之后的空格。谢谢你的回复,你真的帮了大忙!现在可以了!这里不允许使用页脚,特别是那些为网站做广告的页脚。我已经从你的其余答案中删除了这些页脚,但我要求你以后不要添加这些页脚。这里不允许使用页脚,尤其是页脚我已经从你剩下的答案中删除了这些,但是我要求你以后不要添加这些。