2017-08-02 32 views
0

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

我想只是想:

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)); 
+0

什么是你想用for循环呢?同时检查它是否写得很好,并且你可以在途中纠正降低。 – Juan

+0

我想记录所有ArrayList到DataBase.If你问我为什么要把null?因为我的databasehelper不能应用。我想设置 selectedlist到第1列,并选择listarama到第2列。 –

+0

看到我的答案,如果我正确理解你的问题。 – Juan

回答

0

假设:

selectedlist是COL_2(name)的String的ArrayList。

selectedlistarama是COL_3(number)的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); 
} 
+0

是的你的答案是corrent.Thanks for helping.Also我想改善我的问题,为其他用户。你是什么意思检查你的书面?你的意思是你的英语语法不好或你的代码是坏的。你的建议是什么? –

+0

对不起,我是指代码。我认为为了看起来有一个{打开了错误的路线。 – Juan

+0

没问题。良好的编码。 –