如何在同一时间将两个arralist插入SQLite?

时间:2017-08-02 17:00:27

标签: android sqlite android-contentprovider

我为我的应用程序创建了一个数据库。我想插入3个值。但我的问题是当尝试插入第二个值时,它们会转到第一列。这个值来自用户的电话号码(因此来自内容提供商)。当我尝试启动我的代码时,所有列都设置在第一列除外或列。我想将这些值设置为3个不同的列。它显示了10个结果,但我选择了5个名字。我想显示5个结果。其他5个结果转到第2列。我在第二个活动中使用自定义列表视图。另一方面,他们可能会在第一列加载,但我无法看到我的数字值,我是数据库初学者。

我想要:

ID name    number  oran 
1  Ahmet   5555    50
2  Mehmet  6666    50
3  Veli    3333    50
4  Can     2222    50
5  Zehra   11111   50 
etc.

我的databaseHelper:

class DatabaseHelper extends SQLiteOpenHelper {
    private static final String TAG = "DatabaseHelper";

    private static final String TABLE_NAME = "people_table";
    private static final String COL1 = "ID";
    private static final String COL2 = "name";
    private static final String COL3 = "number";
    private static final String COL4 = "oran";



     public DatabaseHelper(Context context) {
            super(context, TABLE_NAME, null, 1);
        }
        public void onCreate(SQLiteDatabase db) {
            String createTable = "CREATE TABLE " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, " +  COL2 + " TEXT,"+
                     COL3 + " TEXT,"+  COL4 + " TEXT)";
            db.execSQL(createTable);
        }
      // COL2 +" TEXT)0" col3 yerine 2 koyulması gerekiyor.
        @Override
        public void onUpgrade(SQLiteDatabase db, int i, int i1) {
            db.execSQL("DROP IF TABLE EXISTS " + TABLE_NAME);
            onCreate(db);
        }

        public boolean addData(String item , String number   ) {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put(COL2, item );
    contentValues.put(COL3 , number);
    contentValues.put(COL4, "50");


            Log.d(TAG, "addData: Adding " + item + " to " + TABLE_NAME);

            long result = db.insert(TABLE_NAME, null, contentValues);

            //if date as inserted incorrectly it will return -1
            if (result == -1) {
                return false;
            } else {
                return true;
            }
        }

当用户点击保存数据按钮时:

 for (String newEntry: selectedlist)
                                AddData(newEntry,null);    {

                            }
                            for (String number : selectedlistarama)
                                AddData(null , number);    {

                            }

添加值:

 private void AddData(String newEntry ,String number) {

        boolean insertData = mDatabaseHelper.addData(newEntry ,number);
        if (insertData) {
            Cursor data = mDatabaseHelper.getData();
            sayı = data.getCount();
            //   toastMessage("Data Successfully Inserted!");
            Toast.makeText(this,String.valueOf(sayı), Toast.LENGTH_SHORT).show();

        } else {
            toastMessage("Something went wrong");
        }

    }

在第二个活动中从数据库获取值:

 while(data.moveToNext()) {

            listData.add(data.getString(1));

            listDatanumber.add(data.getString(2));

           listDataoran.add(data.getString(3));
    }

我的Custom_adapter:

namesbox.setText(listData.get(position));

1 个答案:

答案 0 :(得分:0)

假设:

selectedlist是COL_2(name)的String的ArrayList。

selectedlistarama是COL_3(数字)的String的ArrayList。

注意:如果您想要保留数字,请使用ArrayList<Integer>并存储int值。

我还假设两个列表中的项目数相同,因此所选列表的第一项与选定列表的第一项相同,依此类推。

然后,要拨打addData(String String),你会这样做:

for(int i=0; i<selectedlist.size(); i++){
    String name = selectedlist.get(i);
    String number = selectedlistarama.get(i);
    addData(name, number);
}