Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何禁用Android中已在第一个微调器中选择的第二个微调器项目_Android_Android Spinner - Fatal编程技术网

如何禁用Android中已在第一个微调器中选择的第二个微调器项目

如何禁用Android中已在第一个微调器中选择的第二个微调器项目,android,android-spinner,Android,Android Spinner,我想转换语言。所以我使用了两个微调器,一个是“From Language”,另一个是“To Language”。如果在“来自语言”微调器中选择了一种语言,则该语言不应在第二个微调器中显示(或应禁用)。我怎样才能做到呢 例如,如果我在第一个微调器中选择英语,第二个微调器不应在其下拉列表中显示英语。这可能不是最好的方法 ArrayList<String> languages = new ArrayList<>(); languages.add("English");

我想转换语言。所以我使用了两个微调器,一个是“From Language”,另一个是“To Language”。如果在“来自语言”微调器中选择了一种语言,则该语言不应在第二个微调器中显示(或应禁用)。我怎样才能做到呢


例如,如果我在第一个微调器中选择英语,第二个微调器不应在其下拉列表中显示英语。

这可能不是最好的方法

 ArrayList<String> languages = new ArrayList<>();
    languages.add("English");
    languages.add("Hindi");
    languages.add("Telugu");
    languages.add("Tamil");
    languages.add("Kannada");
    languages.add("Malayalam");
    // make a array list of languages
    String option1 = null;
    Spinner spinnerOption1 = (Spinner) findViewById(R.id.spinner1);
    final ArrayAdapter<String> adapterOpton1 = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, languages);
    spinnerOption1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerOption1.setAdapter(adapterOpton1);

    spinnerOption1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            option1 = adapterOpton1.getItem(position);
        }

    });

    int selectedIndex;

    for (String item : languages) {
        if (item.equals(option1)) {
            selectedIndex == languages.indexOf(item);
        }
    }
    ArrayList<String> languages2 = languages;
    languages2.remove(selectedIndex);

    Spinner spinnerOption2 = (Spinner) findViewById(R.id.spinner2);

    final ArrayAdapter<String> adapterOption2 = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, languages2);
    spinnerOption2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerOption2.setAdapter(adapterOption2);
ArrayList languages=new ArrayList();
语言。添加(“英语”);
语言。添加(“印地语”);
语言。添加(“泰卢固语”);
语言。添加(“泰米尔语”);
语言。添加(“卡纳达”);
语言。添加(“马来语”);
//制作语言数组列表
字符串option1=null;
Spinner spinnerOption1=(Spinner)findViewById(R.id.spinner1);
final ArrayAdapter AdapterOption1=新的ArrayAdapter(getContext(),android.R.layout.simple\u spinner\u项,语言);
spinnerOption1.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
喷丝头选项1.设置适配器(适配器选项1);
spinnerOption1.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
选项1=适配器选项1.getItem(位置);
}
});
int-selectedIndex;
for(字符串项:语言){
如果(项目等于(选项1)){
selectedIndex==languages.indexOf(项目);
}
}
ArrayList languages2=语言;
语言2.删除(选择索引);
喷丝器喷丝器选项2=(喷丝器)findViewById(R.id.spinner2);
final ArrayAdapter adapterOption2=新的ArrayAdapter(getContext(),android.R.layout.simple\u spinner\u项,语言2);
spinnerOption2.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
喷丝头选项2.设置适配器(适配器选项2);
说明: 让我们用语言创建一个arraylist 将其绑定到微调器上的适配器,在选择微调器时跟踪该选择,然后在arraylist中查找该选择的索引。 使用相同的语言创建第二个arraylist,查找并删除用户选择的项,创建适配器并绑定数据


希望能有帮助

这可能不是最好的尝试方法

 ArrayList<String> languages = new ArrayList<>();
    languages.add("English");
    languages.add("Hindi");
    languages.add("Telugu");
    languages.add("Tamil");
    languages.add("Kannada");
    languages.add("Malayalam");
    // make a array list of languages
    String option1 = null;
    Spinner spinnerOption1 = (Spinner) findViewById(R.id.spinner1);
    final ArrayAdapter<String> adapterOpton1 = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, languages);
    spinnerOption1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerOption1.setAdapter(adapterOpton1);

    spinnerOption1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            option1 = adapterOpton1.getItem(position);
        }

    });

    int selectedIndex;

    for (String item : languages) {
        if (item.equals(option1)) {
            selectedIndex == languages.indexOf(item);
        }
    }
    ArrayList<String> languages2 = languages;
    languages2.remove(selectedIndex);

    Spinner spinnerOption2 = (Spinner) findViewById(R.id.spinner2);

    final ArrayAdapter<String> adapterOption2 = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_item, languages2);
    spinnerOption2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerOption2.setAdapter(adapterOption2);
ArrayList languages=new ArrayList();
语言。添加(“英语”);
语言。添加(“印地语”);
语言。添加(“泰卢固语”);
语言。添加(“泰米尔语”);
语言。添加(“卡纳达”);
语言。添加(“马来语”);
//制作语言数组列表
字符串option1=null;
Spinner spinnerOption1=(Spinner)findViewById(R.id.spinner1);
final ArrayAdapter AdapterOption1=新的ArrayAdapter(getContext(),android.R.layout.simple\u spinner\u项,语言);
spinnerOption1.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
喷丝头选项1.设置适配器(适配器选项1);
spinnerOption1.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
选项1=适配器选项1.getItem(位置);
}
});
int-selectedIndex;
for(字符串项:语言){
如果(项目等于(选项1)){
selectedIndex==languages.indexOf(项目);
}
}
ArrayList languages2=语言;
语言2.删除(选择索引);
喷丝器喷丝器选项2=(喷丝器)findViewById(R.id.spinner2);
final ArrayAdapter adapterOption2=新的ArrayAdapter(getContext(),android.R.layout.simple\u spinner\u项,语言2);
spinnerOption2.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
喷丝头选项2.设置适配器(适配器选项2);
说明: 让我们用语言创建一个arraylist 将其绑定到微调器上的适配器,在选择微调器时跟踪该选择,然后在arraylist中查找该选择的索引。 使用相同的语言创建第二个arraylist,查找并删除用户选择的项,创建适配器并绑定数据


希望能有帮助

使用Hashmaps会更容易。创建使用键值填充适配器的适配器

这是我从另一个链接中找到的一个片段,关于如何做到这一点,以防您不熟悉

   public class HashMapAdapter extends BaseAdapter {

    private HashMap<String, String> mData = new HashMap<String, String>();
    private String[] mKeys;
    public HashMapAdapter(HashMap<String, String> data){
        mData  = data;
        mKeys = mData.keySet().toArray(new String[data.size()]);
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(mKeys[position]);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        String key = mKeys[pos];
        String Value = getItem(pos).toString();

        //do your view stuff here

        return convertView;
    }
}
上面的代码只是用来给出想法的伪代码,而不是精确的复制和粘贴。希望这足够让你走了。有很多方法可以剥这只猫的皮,你甚至可以对两个适配器使用相同的列表。然后,当从一个或另一个适配器中选择一个时,在另一个适配器中设置“selectedOtherLanguage”属性,然后在GetView方法中,如果data.get(pos)==selectedFromOtherListItem返回,则不绘制


有很多方法可以做到这一点,只是你想怎么做的问题。祝你好运。

使用Hashmaps会更容易。创建使用键值填充适配器的适配器

这是我从另一个链接中找到的一个片段,关于如何做到这一点,以防您不熟悉

   public class HashMapAdapter extends BaseAdapter {

    private HashMap<String, String> mData = new HashMap<String, String>();
    private String[] mKeys;
    public HashMapAdapter(HashMap<String, String> data){
        mData  = data;
        mKeys = mData.keySet().toArray(new String[data.size()]);
    }

    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public Object getItem(int position) {
        return mData.get(mKeys[position]);
    }

    @Override
    public long getItemId(int arg0) {
        return arg0;
    }

    @Override
    public View getView(int pos, View convertView, ViewGroup parent) {
        String key = mKeys[pos];
        String Value = getItem(pos).toString();

        //do your view stuff here

        return convertView;
    }
}
上面的代码只是用来给出想法的伪代码,而不是精确的复制和粘贴。希望这足够让你走了。有很多方法可以剥这只猫的皮,你甚至可以对两个适配器使用相同的列表。然后,当从一个或另一个适配器中选择一个时,在另一个适配器中设置“selectedOtherLanguage”属性,然后在GetView方法中,如果data.get(pos)==selectedFromOtherListItem返回,则不绘制

有很多方法可以做到这一点,只是你想怎么做的问题。祝你好运