【问题标题】:How to add data to spinner dynamically? Keep the spinner data when every time the activity creates. Android如何动态地将数据添加到微调器?每次创建活动时保留微调器数据。安卓
【发布时间】:2020-12-30 18:47:19
【问题描述】:

[update] 我修正了我犯的错误。现在微调器可以动态更新。但是每次启动这个新activity时,spinner都是空的,再次创建activity时如何保留旧数据?

我有一个 EditView、一个按钮和一个微调器。当用户在 EditView 中键入一个不在微调器中的项目时,他们可以单击按钮添加到微调器中以节省时间。 我在 StackOverflow 和 google 中搜索了一些解决方案,但是单击按钮后,它仍然不起作用,数据仍然没有添加到微调器中。以下是部分代码:

    purchasedProduct=(EditText)findViewById(R.id.purchasedP);
    spinner=(Spinner)findViewById(R.id.spinner);
    spinnerBtn=(Button)findViewById(R.id.purchasedDBtn);
    items =new ArrayList<String>();
    items.add("");

    adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinner.setAdapter(adapter);
    spinnerBtn.setOnClickListener(spinnerBtnListener);
    spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            purchasedProduct.setText(adapterView.getSelectedItem().toString());
        }

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

        }
    });
}

private Button.OnClickListener spinnerBtnListener = new Button.OnClickListener(){

    @Override
    public void onClick(View view) {
        String listItem = purchasedProduct.getText().toString();

        //check if already there
        for(int i = 0;i < adapter.getCount();i++)
        {
            if(listItem.equals(adapter.getItem(i)))
                return;
        }
        //check if type in is empty
        if(!listItem.equals(""))
        {
            adapter.clear();
            items.add(listItem);
            adapter.addAll(items);
            adapter.notifyDataSetChanged();


        }
    }
};

谁能告诉我如何解决它?谢谢!

【问题讨论】:

    标签: java android android-activity dynamic android-spinner


    【解决方案1】:

    您需要将新数据存储在 SQLite 数据库中。在开始活动时,您只需从数据库中获取数据。数据库中的所有数据都保存在设备上。了解如何在 Android Studio 中使用 SQLite。

    您也可以尝试将数据存储在 XML JSON 或文本文件中,但这是个坏主意。

    【讨论】:

      【解决方案2】:

      您可以使用Room Persistence LibraryLook Here for details

      此库可帮助您在运行您的应用的设备上创建应用数据的缓存。此缓存用作您应用的唯一真实来源,无论用户是否有互联网连接,用户都可以在您的应用中查看一致的关键信息副本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多