简体   繁体   English

微调菜单 - Android

[英]Spinner Menu - Android

I would like to add multiple spinner bar menu in my app in android. I am a beginner in it and i created only one spinner bar.我想在 android 的应用程序中添加多个微调栏菜单。我是初学者,我只创建了一个微调栏。 When i create the next one it doesn't work well.当我创建下一个时,效果不佳。 tried to add next spinner here but when I did it, it displays value from the second table in the first spinner.尝试在此处添加下一个微调器,但当我这样做时,它会在第一个微调器中显示第二个表中的值。 It should be first spinner -1st table etc. Thanks in advance for help.它应该是第一个微调器 -1st 表等。在此先感谢您的帮助。

public class SecondPan extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    private Spinner sspnOption6,sspn2;
    private TextView ttxOption6,ttx;
    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_pan);
        Spinner spinner = findViewById(R.id.sspn);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.tab1, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);



    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
        String text = parent.getItemAtPosition(position).toString();
        Toast.makeText(parent.getContext(),text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

You have declared two Spinners sspnOption6 and sspn2 , but you never used them.您已经声明了两个Spinners器 sspnOption6sspn2 ,但您从未使用过它们。 Also you have got the reference for only one spinner which id is sspn .此外,您只获得了一个 id 为sspn的微调器的参考。

So now get reference to another id also create different ArrayAdapters for them, this way you will not get value of first spinner in second one for selected position.所以现在获取对另一个 id 的引用也为它们创建不同的ArrayAdapters ,这样你就不会在第二个选择的 position 中获得第一个微调器的值。

Make theses changes.进行这些更改。

You have already declared two spinners before onCreate():您已经在 onCreate() 之前声明了两个微调器:

private Spinner sspnOption6Spinner;
private Spinner sspn2Spinner;

Get reference of those views, you have earlier got only one.获取这些视图的参考,您之前只有一个。

// Check your id's from layout.
sspnOption6Spinner = findViewById(R.id.sspn_options6);
sspn2Spinner = findViewById(R.id.sspn);

Set ArrayAdapters设置ArrayAdapters

ArrayAdapter<CharSequence> firstSpinnerAdapter = ArrayAdapter.createFromResource(this,R.array.tab1, android.R.layout.simple_spinner_item);
firstSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sspnOption6Spinner.setAdapter(adapter);
ArrayAdapter<CharSequence> secondSpinnerAdapter = ArrayAdapter.createFromResource(this,R.array.tab2, android.R.layout.simple_spinner_item);
secondSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sspn2Spinner.setAdapter(adapter);

Now set listeners, both should have their own:现在设置监听器,两者都应该有自己的:

        sspnOption6Spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String text = parent.getItemAtPosition(position).toString();
                Toast.makeText(parent.getContext(),text, Toast.LENGTH_SHORT).show();
            }
        });
        sspn2Spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String text = parent.getItemAtPosition(position).toString();
                Toast.makeText(parent.getContext(),text, Toast.LENGTH_SHORT).show();
            }
        });

If you want you can set onNothingSelected()如果你愿意,你可以设置onNothingSelected()

Also read the documentation , it has all details.另请阅读 文档,它包含所有详细信息。

I would like to add multiple spinner bar menu in my app in android.我想在我的 android 应用程序中添加多个微调栏菜单。 I am a beginner in it and i created only one spinner bar.我是它的初学者,我只创建了一个微调杆。 When i create the next one it doesn't work well.当我创建下一个时,它无法正常工作。 tried to add next spinner here but when I did it, it displays value from the second table in the first spinner.尝试在此处添加下一个微调器,但是当我这样做时,它会显示第一个微调器中第二个表中的值。 It should be first spinner -1st table etc. Thanks in advance for help.它应该是第一个微调器 -1st table 等。在此先感谢您的帮助。

public class SecondPan extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    private Spinner sspnOption6,sspn2;
    private TextView ttxOption6,ttx;
    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_pan);
        Spinner spinner = findViewById(R.id.sspn);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.tab1, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);



    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
        String text = parent.getItemAtPosition(position).toString();
        Toast.makeText(parent.getContext(),text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM