【问题标题】:How to populate spinner data based on from and to dates from sqlite database?如何根据 sqlite 数据库中的起始日期和结束日期填充微调器数据?
【发布时间】:2015-07-14 17:12:53
【问题描述】:

我编写了一个程序来插入一些数据,其中还包括一个名为日期的列,所以当我插入一些东西时,日期也会同时插入。

插入工作完美,现在在不同的活动中,我有两个来自日期和今天的编辑文本,单击时将打开单独的日期选择器,并且所选日期将设置在相应的编辑文本上,现在我要做的是完成后从日期和日期中选择,我希望我的微调器根据我插入数据的日期来填充。

我尝试了一些不起作用的方法。

这是我创建的表

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;

这是根据日期获取 accountname 值的查询

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

这是活动代码

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

【问题讨论】:

    标签: android sqlite date


    【解决方案1】:

    我认为您应该查看 日期选择器,因为它仅用于此目的。微调器用于更多的有限选择。你可以在这里使用它,但你需要做很多改造代码才能达到同样的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多