2017-08-11 29 views
0

我是android學習者的初學者,我有一個疑問,從Calendar視圖中保存事件,當我提交我的事件時,爲什麼在提交我插入的數據後重復,這是我的代碼,我附上我的截圖輸出,給我示例和idea.Is錯誤的調用按鈕中的函數,如何訪問它,給它的解決方案。插入按鈕點擊時顯示的值(dublicate)

enter image description here

btnEventSubmit.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String getEvents = edtEvent.getText().toString(); 
        if (getEvents.length() == 0) { 
         Toast.makeText(getApplicationContext(), "Please enter any events", Toast.LENGTH_LONG).show(); 
        } else { 
         dialog.dismiss(); 
         Toast.makeText(getApplicationContext(), "Your Event Submitted Successfully", Toast.LENGTH_LONG).show(); 
         databasesqliteclass.createTabel(); 
         databasesqliteclass.initialFunctionalities("insert into " 
           + Constants.TABLE_NAME + "(" + Constants.Column_1 + "," + Constants.Column_2 + "," + Constants.Column_3 + ","+Constants.Column_4+ 
           ")values('" + getEvents + "','" + month + "','" + dayOfMonth + "'" + ",'" + year + "'"+ ")"); 
         databasesqliteclass.selectQuery("Select *from " + Constants.TABLE_NAME); 
         databasesqliteclass.printTableData(); 
         ArrayList<String> dataList = databasesqliteclass.printTableData1(); 
         Log.i("dataList", "" + dataList); 
         for (int i = 0; i < dataList.size(); i++) { 
          Log.i("getsplit", "" + dataList.get(i)); 
          String splitfrst = dataList.get(i); 
          String getsplitans[] = splitfrst.split("-"); 
          String geteventss = null; 
          String geteventdate = null; 
          String geteventmonth = null; 
          String geteventyear=null; 
          Log.i("getsplitansgetsplitans", "" + getsplitans); 
          for (int j = 0; j < getsplitans.length; j++) { 
           geteventss = getsplitans[1]; 
           geteventmonth = getsplitans[2]; 
           geteventdate = getsplitans[3]; 
           geteventyear=getsplitans[4]; 
           Calendar cal = Calendar.getInstance(); 
           int currentMonth = Integer.parseInt(geteventmonth); 
           SimpleDateFormat month_date = new SimpleDateFormat("MMMM"); 
           cal.set(Calendar.MONTH, currentMonth); 
           String month_name = month_date.format(cal.getTime()); 
           Log.i("month_name", "" + month_name); 
           Log.i("getevents", "" + geteventss); 
           Log.i("geteventmonth", "" + geteventmonth); 
           Log.i("geteventdate", "" + geteventdate); 
           eventsmodel = new Eventsmodel(); 
           eventsmodel.setStrrevents(geteventss); 
           eventsmodel.setStrDate(geteventdate); 
           eventsmodel.setStrMonth(month_name); 
           eventsmodel.setStryear(geteventyear); 
          } 
          mCatagoryList.add(eventsmodel); 
         } 


         EventAdapter eventAdapter = new EventAdapter(getApplicationContext(), mCatagoryList); 
         Eventlist.setAdapter(eventAdapter); 
        } 

       } 
      }); 

這裏是我的選擇查詢,我把它叫做按鈕點擊的值保存到數據庫

public ArrayList<String> printTableData1() { 
    SQLiteDatabase db = getReadableDatabase(); 
    Cursor cur = db.rawQuery("SELECT * FROM " + Constants.TABLE_NAME, null); 
    if (cur.getCount() != 0) { 
     cur.moveToFirst(); 
     if (cur.moveToFirst()) { 
      data = new ArrayList<String>(); 
      do { 
       row_values = ""; 
       for (int i = 0; i < cur.getColumnCount(); i++) { 
        row_values = row_values + "-" + cur.getString(i); 
       } 
       Log.d("LOG_TAG_HERE", row_values); 
       data.add(row_values); 
      } while (cur.moveToNext()); 
     } 
    } 
    db.close(); 
    return data; 
} 
+0

你確定它插入多次嗎?或者它多次顯示?你在做sqlite的方式,是不是很好的方法 –

+0

顯示多次,那麼如何訪問sqlite –

+0

要訪問sqlite - https://stackoverflow.com/questions/17529766/view-contents-of-database-file -in-機器人工作室 –

回答

0

您需要聲明和使用您的Eventsmodel外的for循環。見下面的代碼。

for (int j = 0; j < getsplitans.length; j++) { 
    geteventss = getsplitans[1]; 
    geteventmonth = getsplitans[2]; 
    geteventdate = getsplitans[3]; 
    geteventyear=getsplitans[4]; 
    Calendar cal = Calendar.getInstance(); 
    int currentMonth = Integer.parseInt(geteventmonth); 
    SimpleDateFormat month_date = new SimpleDateFormat("MMMM"); 
    cal.set(Calendar.MONTH, currentMonth); 
    String month_name = month_date.format(cal.getTime()); 
} 

eventsmodel = new Eventsmodel(); 
eventsmodel.setStrrevents(geteventss); 
eventsmodel.setStrDate(geteventdate); 
eventsmodel.setStrMonth(month_name); 
eventsmodel.setStryear(geteventyear);