【问题标题】:How to set the first position of a spinner to null如何将微调器的第一个位置设置为空
【发布时间】:2016-04-29 22:16:18
【问题描述】:

我有一个 Spinner,我正在填充一个 ArrayAdapter 对象,但我需要此 Array 的第一个位置始终为空或出现类似“选择一个对象”的内容。我在这里搜索了论坛但没有成功,ArrayList String 或 spinner.setPrompt 的解决方案不起作用=/

ArrayList<Object> objects = null;

objects= findMyObjects();

final ArrayAdapter<Object> adapterObjects = new ArrayAdapter<Object>(contexto, R.layout.spinner_item, objects);
mySpinner = (Spinner) viewPai.findViewById(R.id.s_spinner);
mySpinner.setAdapter(adapterObjects);
adapterObjects.notifyDataSetChanged();
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                }

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

                }
            });



public ArrayList<Object> findMyObjects() {
        allObjects = new ArrayList<Object>();
        Cursor cursor;

        String sql = "SELECT * FROM Object; ";
        cursor = database.rawQuery(sql, null);

        if (cursor.getCount() >= 0) {
            cursor.moveToFirst();
            while (!cursor.isAfterLast()) {
                Objects object = new Objects();
                object.setId(cursor.getLong(0));
                allObjects.add(object);
                cursor.moveToNext();
            }
        }
        cursor.close();
        return allObjects;
    }

【问题讨论】:

    标签: java android android-arrayadapter adapter android-spinner


    【解决方案1】:

    【讨论】:

    • 它不起作用,因为他创建了一个静态字符串列表,而我使用了一个动态对象列表。
    • 你可以在ArrayAdapter中显式添加一个新的String对象 allObjects.add(new String("Select an Object")) if (cursor.getCount() >= 0) { cursor.moveToFirst(); while (!cursor.isAfterLast()) { Objects object = new Objects(); object.setId(cursor.getLong(0)); allObjects.add(object); cursor.moveToNext(); } } 之后,您必须检查该值是“选择对象”还是通过实例运算符
    • 在 AndroidStudio 中生成错误,因为我的 ArrayAdapter allObjects 是 Object 类型,而不是 String,我需要 object
    【解决方案2】:

    快速

    制作一个虚拟对象,然后在放入适配器时显示 = "Select an object"

    再长一点

    扩展 arrayadapter 或放置值的视图,以便第一个对象始终是显示“选择对象”的文本。

    【讨论】:

    • 我的对象只有 id,不必将字符串只放入 id 0,但这种解决方案并不好。我想将该字段留空或将字符串添加到第一个位置。我该怎么做?
    • stackoverflow.com/a/25438974/6270761 这更好地解释了我所说的,至于您将如何做,将您的 id 转换为 String 并将它们放入 ArrayAdapter。但恐怕我不知道一个看起来像 adapter.setPrompt("Select one of the following"); 的干净解决方案;
    • 我尝试但不工作,因为他使用 ArrayAdapter String 而我使用 ArrayAdapter Object。字符串是如此简单,但我需要对象。 =/
    • 看看另一个答案完全忘记了提示存在,应该会更好。
    猜你喜欢
    • 2019-05-14
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多