【问题标题】:How to update the database in spinner when a record is inserted?插入记录时如何更新微调器中的数据库?
【发布时间】:2012-08-02 14:30:37
【问题描述】:

这是我用来在 .MainActivity.java

中加载微调器的代码
    public void spin() {
    {  
        try{  
            SQL db = new SQL(getBaseContext());  
            db.open();  
            List<String> cursor = db.selectAll();
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,  
                android.R.layout.simple_spinner_item, cursor);
                s.setAdapter(adapter);  
        }  
        catch(Exception e)  
        {  
        Log.v("Error","e.tostring()");  
        }
    }  

这是 SQL.java 中用于从数据库中获取项目的代码。

    public List<String> selectAll() {
    List<String> list = new ArrayList<String>();
    Cursor cursor = this.mydb.query(DATABASE_TABLE, new String[] {KEY_NAME
    }, null, null, null, null, null);
    if (cursor.moveToFirst()) {
        do {
            list.add(cursor.getString(0));
        } while (cursor.moveToNext());
    }
    if (cursor !=null && !cursor.isClosed()) {
        cursor.close();
    }
    return list;
}

这就是我从另一个活动中添加记录的方式.Addnew.java

case R.id.bsave:
            boolean work=true;
            try{
            String rno1 = rno.getText().toString();
            String name1 = name.getText().toString();
            String reg1 = reg.getText().toString();
            String mob1 = mob.getText().toString();

            SQL entry = new SQL(Addnew.this);
            entry.open();
            entry.createEntry(rno1,name1,reg1,mob1);
            entry.close();
            }
            catch(Exception e){
                work=false;
                String error = e.toString();
                Dialog d = new Dialog(this);
                d.setTitle("Naah");
                TextView tv = new TextView(this);
                tv.setText(error);
                d.setContentView(tv);
                d.show();
            }finally{
                if(work){
                    Dialog d = new Dialog(this);
                    d.setTitle("Yeah");
                    TextView tv = new TextView(this);
                    tv.setText("Success");
                    d.setContentView(tv);
                    d.show();
                }
            }
            break;

问题是当我在数据库中插入一条新记录时,它不会立即显示在微调器中,而是仅在重新启动应用程序后才显示。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: android database sqlite android-spinner


    【解决方案1】:

    将数据添加到列表后,请设置 adapter.notifyDataSetChanged() 以更新您的微调器内容。

    它会解决你的问题。

    【讨论】:

    • 你能展示你是如何添加的吗?更新微调器内容的唯一方法是通过调用 notifyDataSetChanged 方法来设置 adpater
    • 你是如何在 mainactivity 中访问适配器的??请看这个link
    • 我已经添加了所有三个活动的代码。请看
    • 您需要在 Addnew.java 类中添加 adpater.notifyDataSetChanged()。将您的 ArrayAdapter 设置为静态,以便您可以在 Addnew Class 中访问
    • 谢谢兄弟.. 这对我来说有点复杂(初学者),如果你能用示例代码或其他东西解释它,那就太好了 :)
    【解决方案2】:

    尝试通过任何一种方法刷新您的活动

    startActivity(getIntent);
    

    Intent addservice1 = new Intent(YourActivity.this,YourActivity.class);
                    startActivity(addservice1);
    

    它会解决你的问题。

    希望对你有帮助

    【讨论】:

    • 您在哪里添加此代码?插入数据后尝试添加它..因为我在我的应用程序中使用的相同功能,当我刷新活动时微调器会更新
    猜你喜欢
    • 2011-08-04
    • 2019-04-19
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 2019-11-02
    • 2011-09-28
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多