ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android-从Spinner onItemSelected更改Spinner选项

2019-10-25 03:37:17  阅读:188  来源: 互联网

标签:android-studio-3-0 spinner android


我在上面有一个微调器,显示圣经的书.选择一本书后,我会找出其中有几章,并将其放入Chapters变量中.然后,我想根据有多少章来更改名为bible_chapters的微调器.

public class Find extends Fragment {

    private Spinner bibleBooks;
    private Spinner bibleChapters;
    private Spinner bibleVerses;
    private boolean spinnerInitialized;

    public Find() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        final View rootView = inflater.inflate(R.layout.fragment_find, container, false);
        final DatabaseManager databaseAccess = DatabaseManager.getInstance(getActivity());
        final Context con = getContext();

        // Spinner Listener
        bibleBooks = rootView.findViewById(R.id.bible_books);
        bibleChapters = rootView.findViewById(R.id.bible_chapters);

        bibleBooks.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                if (!spinnerInitialized) {
                    spinnerInitialized = true;
                    return;
                }

                databaseAccess.open();
                String book = adapterView.getSelectedItem().toString();
                int Chapters = databaseAccess.howManyChapters(book);
                databaseAccess.close();
                Log.d("Chapters",String.valueOf(Chapters));
                if(Chapters > 1) {

                    List<String> newChapters = new ArrayList<String>();
                    for (int x = 2; x <= Chapters; x++) {
                        newChapters.add("Chapter " + x);
                    }
                    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(con, bibleBooks, newChapters);
                    bibleBooks.setAdapter(arrayAdapter);
                }

            }
            public void onNothingSelected(AdapterView<?> adapterView) {
                return;
            }
        });


        // Inflate the layout for this fragment
        return rootView;
    }

}

错误在于ArrayAdapter< String>. arrayAdapter = new ArrayAdapter< String>(con,bibleBooks,newChapters);线.问题在于上下文.我试过了:

这个,

rootView,

getContext(),

getActivity(),

我不断得到的错误是:
错误:找不到适用于ArrayAdapter(Context,Spinner,List< String>)的合适的构造函数

他们似乎都不是它要找的东西.我要去哪里错了?

解决方法:

在Xamarin.Android中,我总是传递spinnerItem,例如Android.Resource.Layout.SimpleSpinnerItem

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(con, Android.Resource.Layout.SimpleSpinnerItem, newChapters);

而不是微调框本身的* bibleBooks *.

编辑:
对于Java:android.R.layout.simple_spinner_item

标签:android-studio-3-0,spinner,android
来源: https://codeday.me/bug/20191025/1925576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有