mardi 14 juillet 2015

How to populate spinner data based on from and to dates from sqlite database?

I have written a program to insert some data which also includes a column called date , so when i am inserting something the date will also be inserted at the same time. Insertion is working perfectly , now in a different activity i have two edittexts fromdate and todate which when clicked separate datepicker will open and the selected date will be set on the respective edittext , now what i want to do is when i have finished selecting from date and to date , i want my spinner to get populated based on the date i have inserted my data.

I have tried something which is not working though.

This is the table i have created

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;

This is the query for getting the values of accountname based on 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;
}

This is the activity code

@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);
    }
};

}

Need some help to achieve the above Thank You

Aucun commentaire:

Enregistrer un commentaire