【问题标题】:How To Display Specific Amount in Spinner?如何在 Spinner 中显示特定金额?
【发布时间】:2018-03-27 14:17:47
【问题描述】:

我想在另一个页面上使用putExtra() 获取信息,我可以做到,但我唯一的问题始终是第一个值 sample_array 的默认值,但我希望默认情况下 classDayIntent 值显示在微调器中

提示:Spinner 收到的putExtra() 在那里

第一个活动:

Intent intent = new Intent();

intent.putExtra("className" , className);
intent.putExtra("uniName" , uniName);
intent.putExtra("classDay" , classDay);

intent.setClass(context , AddNewClass.class);

context.startActivity(intent);

第二个活动:

Spinner spinner = (Spinner)findViewById(R.id.spinnerDay);

String className = getIntent().getStringExtra("className");
String uniName = getIntent().getStringExtra("uniName");
String classDayInent = getIntent().getStringExtra("classDay"); // How To Display classDayInent In Spinner....

className_EditeText.setText(className);
uniName_EditeText.setText(uniName);

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this , R.array.sample_array , android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String classDay = parent.getSelectedItem().toString();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }
});

字符串:

<resources>
<string name="app_name">ClassManager</string>
<string-array name="sample_array">
    <item>شنبه</item>
    <item>یکشنبه</item>
    <item>دوشنبه</item>
    <item>سه شنبه</item>
    <item>چهارشنبه</item>
    <item>پنجشنبه</item>
    <item>جمعه</item>
</string-array>

【问题讨论】:

    标签: android android-studio android-intent spinner android-spinner


    【解决方案1】:

    您可以使用适配器的add 功能。 因为CharSequenceinterface,而String 类实现了CharSequence,所以你可以直接将字符串添加到适配器

    adapter.add(classDayInent);
    spinner.setAdapter(adapter);
    

    另一个问题是,createFromResources 创建一个不可变列表意味着它无法添加更多项目。

    解决方案:使用可变列表创建自己的适配器

    List<String> list = new ArrayList<>(Arrays.asList(getResources().getStringArray(R.array.sample_array)));
    
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this , android.R.layout.simple_spinner_item,list);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    list.add(0,classDayIntent);// to add received element at first position to display
    spinner.setAdapter(adapter);
    

    【讨论】:

    • 这种方式有错误,应用程序已经停止,不添加到Array没有办法显示吗?
    • 这种方式有效但不能解决我的问题,要接收的金额在 sample_array 中所以不应该添加,我正在寻找一种方法来临时显示它(只要因为我在这个页面上)
    • 对不起,我的英语很差,我不能正确地问我的问题(我会改变我的问题)。
    • 我的主要问题是,收到的 classDayIntent 数量在 sample_array 中。我想默认 classDayIntent 值显示在 spinner 中,但总是默认值第一个值 sample_array
    • 我找到了新方法:spinner.setSelection(position);显示默认值,现在如何将 sample_array 与列表进行比较以找出位置
    【解决方案2】:

    您可以获取您的 xml 数组列表,然后添加到其中:

    List<String> ar = new LinkedList<String>(Arrays.asList(getResources().getStringArray(R.array.sample_array)));
        ar.add("test");
    

    【讨论】:

    • @Pavneet_Singh 已更新。是的 Arrays.asList 给出了固定大小的数组,所以需要这样做。
    • 是的,这就是我提到这个问题的原因,但您仍然需要更改适配器结构
    【解决方案3】:

    我找到了正确答案:

    String classDayInent = getIntent().getStringExtra("classDay"); 
    
     List<String> list = new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.sample_array)));
    
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this , android.R.layout.simple_spinner_item,list);
    
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            //find classDayIntent from List For get Position To Display
    
            for (int i = 0; i < list.size(); i++)
            {
                if (classDayIntent.equals(list.get(i)))
                {
                    spinner.setSelection(i);
                }
            }
    
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
            {
                classDay = parent.getSelectedItem().toString();
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
    
    
            }
        });
    

    【讨论】:

    • but my only problem is that I want to put one of the information in Spinner but I do not know how to do it 你没有指定你已经在数组中拥有它
    • 因为我确定它在数组中,但是有一些方法可以区分我没有使用
    猜你喜欢
    • 2021-04-09
    • 2018-10-09
    • 2017-01-13
    • 1970-01-01
    • 2019-03-01
    • 2019-09-13
    • 2014-07-29
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多