2015-07-14 1 views
0

J'ai écrit un programme pour insérer des données qui incluent également une colonne appelée date, donc quand j'insère quelque chose, la date sera également insérée en même temps.Comment peupler les données spinner en fonction des dates de et à partir de la base de données sqlite?

L'insertion fonctionne parfaitement, maintenant dans une activité différente J'ai deux edittexts fromdate et todate qui, lorsqu'on clique sur datepicker séparé ouvrira et la date sélectionnée sera définie sur le edittext respectif, maintenant ce que je veux faire est quand j'ai J'ai terminé la sélection de la date et à ce jour, je veux que mon spinner soit rempli en fonction de la date à laquelle j'ai inséré mes données.

J'ai essayé quelque chose qui ne fonctionne pas bien.

Voici le tableau que j'ai créé

private static final String CREATE_TABLE_FINALDATA = "Create table 
      "+TABLE_NAME_FINALDATA+" (" +UID 
      +" INTEGER PRIMARY KEY, "+REFERENCE_NO+" VARCHAR(200), 
      "+ACCOUNT_NAME+" VARCHAR(200), "+ACCOUNT_TYPE+" VARCHAR(100) 
      ,"+VEHICLE_NO+" VARCHAR(100), "+DRIVER_CODE+" VARCHAR(50), 
      "+DRIVER_NAME+" VARCHAR(200), "+DIESEL_TYPE+" VARCHAR(50), 
      "+DIESEL_RATE+" DOUBLE, "+DIESEL_QUANTITY+" DOUBLE, "+AMOUNT 
      +" DOUBLE, "+EFFECTIVE_DATE+" VARCHAR(255), "+NO_OF_COPIES 
      +" VARCHAR(10), "+TIME+" VARCHAR(255), "+TRANSACTION_ID+" 
      VARCHAR(500), "+REMARK+" VARCHAR(500), "+SYNC+" VARCHAR(20), 
      "+CLIENT_CODE+" VARCHAR(255))"; 

private static final String DROP_TABLE_FINALDATA = "Drop table If Exists 
      "+TABLE_NAME_FINALDATA; 

Ceci est la requête pour obtenir les valeurs de accountname en fonction des dates

public Cursor getAccName(String fromdate, String todate) { 
    SQLiteDatabase db = helper.getWritableDatabase(); 
    Cursor cursor = db.rawQuery("Select 
      "+DbListHelper.ACCOUNT_NAME+", "+DbListHelper.UID+ 
      " from " + DbListHelper.TABLE_NAME_FINALDATA + " where 
      "+DbListHelper.EFFECTIVE_DATE+"between"+DbListHelper.EFFECTIVE_DATE 
        + " = '" + fromdate + "' and " + DbListHelper.EFFECTIVE_DATE + " = '" + todate 
        + "'", null); 
    return cursor; 
} 

Ceci est le code d'activité

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view_records); 
    spinnerAccountName = (Spinner) findViewById(R.id.spinnerAccountName); 
    imgBack = (ImageView) findViewById(R.id.imgBack); 
    etFromDate = (AutoCompleteTextView) findViewById(R.id.editFromDate); 
    etTodate = (AutoCompleteTextView) findViewById(R.id.editToDate); 
    txtTotalCount = (TextView) findViewById(R.id.NoOfSlips); 
    txtdieselQty = (TextView) findViewById(R.id.DieselQuantity); 
    txtdieselAmnt = (TextView) findViewById(R.id.Amount); 
    cal = Calendar.getInstance(); 
    day = cal.get(Calendar.DAY_OF_MONTH); 
    month = cal.get(Calendar.MONTH); 
    year = cal.get(Calendar.YEAR); 

    listHelper = new SqliteVehicleDetails(getBaseContext()); 
    listHelper.open(getBaseContext()); 

    etFromDate.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(DATE_PICKER_ID); 
     } 
    }); 

    etTodate.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(DATE_PICKER_ID_1); 
     } 
    }); 

    etFromDate.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      if (cursor.moveToFirst()) { 
       String fromDate = cursor.getString(cursor.getColumnIndex(DbListHelper.EFFECTIVE_DATE)); 
       String toDate = cursor.getString(cursor.getColumnIndex(DbListHelper.EFFECTIVE_DATE)); 
       cursor = listHelper.getAccName(fromDate, toDate); 
       int[] to5 = new int[]{android.R.id.text1}; 
       String[] from5 = new String[]{DbListHelper.ACCOUNT_NAME}; 
       final SimpleCursorAdapter adapter5 = new SimpleCursorAdapter(
         getBaseContext(), 
         android.R.layout.simple_list_item_1, 
         cursor, 
         from5, 
         to5 
       ); 
       adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spinnerAccountName.setAdapter(adapter5); 
      } 
     } 
    }); 

    etTodate.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      cursor = listHelper.getFinalData(); 
      if (cursor.moveToFirst()) { 
       String fromDate = cursor.getString(cursor.getColumnIndex(DbListHelper.EFFECTIVE_DATE)); 
       String toDate = cursor.getString(cursor.getColumnIndex(DbListHelper.EFFECTIVE_DATE)); 
       cursor = listHelper.getAccName(fromDate, toDate); 
       int[] to5 = new int[]{android.R.id.text1}; 
       String[] from5 = new String[]{DbListHelper.ACCOUNT_NAME}; 
       final SimpleCursorAdapter adapter5 = new 
         SimpleCursorAdapter(getBaseContext(), 
         android.R.layout.simple_list_item_1, cursor, 
         from5, to5); 
       adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       spinnerAccountName.setAdapter(adapter5); 
      } 
     } 
    }); 

    @Override 
    @Deprecated 
    protected Dialog onCreateDialog (int id){ 
     switch (id) { 
      case DATE_PICKER_ID: 
       return new DatePickerDialog(this, datePickerListener, year, month, day); 

      case DATE_PICKER_ID_1: 
       return new DatePickerDialog(this, datePickerListener1, year, month, day); 
     } 
     return null; 
    } 

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { 
      etFromDate.setText(selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear); 
     } 
    }; 

    private DatePickerDialog.OnDateSetListener datePickerListener1 = new DatePickerDialog.OnDateSetListener() { 
     public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { 
      etTodate.setText(selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear); 
     } 
    }; 
} 

Répondre

0

Je pense que vous devriez regarder dans date picker comme c'est mea nt à cette fin seulement. Un spinner est utilisé pour plus d'un choix fini. Vous pouvez l'utiliser ici, mais vous devez faire beaucoup de code de réforme pour obtenir le même effet.