Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将hashmap从活动页面传递到dbhelper类_Android_Sqlite - Fatal编程技术网

Android 如何将hashmap从活动页面传递到dbhelper类

Android 如何将hashmap从活动页面传递到dbhelper类,android,sqlite,Android,Sqlite,我需要知道如何在没有意图服务的情况下将数据从活动页面传递到dbhelper类。我正在从服务器获取数据并将数据传递到数据库。我真的很困惑 我以这种方式存储数据 public static HashMap<String, Object> listhashmap; 这是密码 public DBHelper(Context context) { super(context, DBName, null, version); curren

我需要知道如何在没有意图服务的情况下将数据从活动页面传递到dbhelper类。我正在从服务器获取数据并将数据传递到数据库。我真的很困惑

我以这种方式存储数据

public static HashMap<String, Object> listhashmap;
这是密码

    public DBHelper(Context context) {
            super(context, DBName, null, version);
            currentContext = context;

            newarraylistitems = FirstActivity.arraylistitems;
            System.out.println("newarraylistitems="+newarraylistitems);

            DBPath = "/data/data/" + context.getPackageName() + "/databases";
            createDatabase();

        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            // TODO Auto-generated method stub

        }

        private void createDatabase() {
            boolean dbExists = checkDbExists();

            /* ("ID" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE ,
                         "user_message_id" VARCHAR DEFAULT NA, "message" VARCHAR DEFAULT
                         NA, "title" VARCHAR DEFAULT NA, "message_time" VARCHAR DEFAULT NA, "mp3" VARCHAR DEFAULT NA,
                         "userID" VARCHAR DEFAULT NA)*/


            if (dbExists) {
                // do nothing
            } else {
                DB = currentContext.openOrCreateDatabase(DBName, 0, null);
    DB.execSQL("CREATE TABLE IF NOT EXISTS " +tableName +" (ID INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE, " +
            "user_message_id VARCHAR DEFAULT NA," +"message VARCHAR DEFAULT NA," + "title VARCHAR DEFAULT NA)"+
            "mp3 VARCHAR DEFAULT NA "+ "userID VARCHAR DEFAULT NA;");


////some dummy contents
                DB.execSQL("INSERT INTO " +     
                        tableName +
                        " Values ('M','Sing','India',25);");
                DB.execSQL("INSERT INTO " +
                        tableName +
                        " Values ('C','Raje','India',25);");
                DB.execSQL("INSERT INTO " +
                        tableName +
                        " Values ('D','Phonu','Argentina',20);");
                DB.execSQL("INSERT INTO " +
                        tableName +
                        " Values ('V','Veera','EU',25);");
                DB.execSQL("INSERT INTO " +
                        tableName +
                        " Values ('T','Shenoi','Bangla',25);");
                DB.execSQL("INSERT INTO " +
                        tableName +
                        " Values ('L','Lamha','Australia',20);");
            }


        }

        private boolean checkDbExists() {
            SQLiteDatabase checkDB = null;

            try {
                String myPath = DBPath + DBName;
                checkDB = SQLiteDatabase.openDatabase(myPath, null,
                        SQLiteDatabase.OPEN_READONLY);

            } catch (SQLiteException e) {

                // database does't exist yet.

            }

            if (checkDB != null) {

                checkDB.close();

            }

            return checkDB != null ? true : false;
        }
    }
我已经为listview创建了基本适配器,是否有其他方法可以将活动页面的hashmap数据传递给dbhelper类 这里的
listitems
是我在dbhelper类中创建的
hashmap


谁能帮我@Thank

看看这个在活动中实现SQLiteAdapter的简单示例

请注意,还有其他通过内容提供商(使用SQLite)提供数据的方法,特别是当您需要与其他应用程序共享数据时。为此,请查看Lar Vogel的教程(顺便说一句,这是一个很好的来源)

另外,请随意看看我不久前使用SQLite完成的一个Android项目中的一些(较旧的,不是最紧凑/最干净的代码)

可以使用DBhelper/adapter类中的公共方法通过参数传递listview项的数据

如果需要其他帮助,请发布DBHelper代码

我通过活动对话框中的onclick侦听器调用上述方法之一的示例

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.endingadddialog);

// inflate our views.
inputEnding = (EditText) findViewById(R.id.endingAddInputText);
stem = (TextView) findViewById(R.id.endingAddStemText);

ok = (Button) findViewById(R.id.okEndingAddButton);
cancel = (Button) findViewById(R.id.cancelEndingAddButton);
setTitle("Add Ending");
ok.setOnClickListener(new View.OnClickListener() { // assign the
// function of our
// ok button.
public void onClick(View v) {

StemEsteemApplication.getDbHelper().createEnding(
b.getInt("weekNo"), b.getInt("stemNo"),
inputEnding.getText().toString());
dismiss(); // this will call FillData() through the dismiss
// listener and also kill the dialog.
}
});

免责声明:请注意,上面的代码中有一些内容可能不干净(例如使用全局变量(StemEsteemApplication)获取我的DbHelper。如果其他更擅长设计模式的人想纠正我,请随意。

这可能是DbHelper方法的参数吗?@blackbelt我没有获取你的信息。我需要获取服务器所获取的相同数据。可能是参数DbHelper/适配器类通常具有静态方法,其中包含数据(作为参数)可以传递到(要插入到服务器中)从活动中。您使用的是什么数据库?@blackbelt您能给出一些想法吗..我可以连续添加数据吗?它将自动递增吗?请查看您的表/架构是否使用了一个整数主键的列来实现,而不是应该自动递增的列。除非您发布大多数DBHelper类,否则我无法回答这个问题代码。您的DBHelper或DBAdapter方法有一些参数,您可以将这些参数作为insert语句的值传递到SQLite中。请看看我是如何在我编辑的答案版本中的一些开放源代码中实现这一点的。泽尔克兹再次感谢..我编辑了需要插入一些值的代码..我有shmap值在其他活动中..我只需要传递..请帮助我+1为您提供帮助,我需要将值从活动传递到dbhelper类
public long createEnding(int weekNo, int stemNo, String ending) {
ContentValues values = new ContentValues();
values.put(WEEK_NUMBER, weekNo);
values.put(STEM_NUMBER, stemNo);
values.put(ENDING, ending);
return database.insert(TABLE_ENDINGS, null, values);
}

/**
* @updateEnding updates an ending that is already attached to the
* designated stem.
*/

public long updateEnding(int rowid, String ending) {
ContentValues values = new ContentValues();
values.put(ENDING, ending);
return database.update(TABLE_ENDINGS, values, "ROWID" + " = " + rowid,
null);
}

/**
* @deleteEnding deletes an the designated ending attached to a stem.
*/

public boolean deleteEnding(int rowid) {
return database.delete(TABLE_ENDINGS, "ROWID" + " = " + rowid, null) > 0;
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.endingadddialog);

// inflate our views.
inputEnding = (EditText) findViewById(R.id.endingAddInputText);
stem = (TextView) findViewById(R.id.endingAddStemText);

ok = (Button) findViewById(R.id.okEndingAddButton);
cancel = (Button) findViewById(R.id.cancelEndingAddButton);
setTitle("Add Ending");
ok.setOnClickListener(new View.OnClickListener() { // assign the
// function of our
// ok button.
public void onClick(View v) {

StemEsteemApplication.getDbHelper().createEnding(
b.getInt("weekNo"), b.getInt("stemNo"),
inputEnding.getText().toString());
dismiss(); // this will call FillData() through the dismiss
// listener and also kill the dialog.
}
});