Android: как добавить и отобразить текущую дату со 100 днями от выбранной даты

Я хочу получить текущую дату от пользователя после получения текущей даты Текстовое представление Хотите автоматически отображать дату с 100 днями

т.е. если я выберу 15-12-2015 текстовое представление, которое нужно отобразить 24-03-2016

вот мой код:

public class MainActivity extends ActionBarActivity implements View.OnClickListener {
    private Button ib;
    private Calendar cal;
    private int day;
    private int month;
    private int year;
    private EditText et;
    private TextView display;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ib = (Button) findViewById(R.id.button);
        cal = Calendar.getInstance();
        day = cal.get(Calendar.DAY_OF_MONTH);
        month = cal.get(Calendar.MONTH);
        year = cal.get(Calendar.YEAR);
        et = (EditText) findViewById(R.id.editText);
        display = (TextView) findViewById(R.id.textView3);
        ib.setOnClickListener((View.OnClickListener) this);

    }
@Override
    public void onClick(View v) {
        showDialog(0);
    }
    @Override
    @Deprecated
    protected Dialog onCreateDialog(int id) {
        return new DatePickerDialog(this, datePickerListener, year, month, day);
    }

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

person Spartons    schedule 15.12.2015    source источник


Ответы (3)


Используйте класс Calender для добавления числа в дату. Убедитесь, что дата правильно отформатирована.

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int selectedYear,
                                  int selectedMonth, int selectedDay) {
                  String dtStartDate = selectedYear+"-"+selectedMonth+"-"+selectedDay+"00:00";
                  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                  Calendar c = Calendar.getInstance();
                  c.setTime(dtStartDate);
                  c.add(Calendar.DATE, 100);  // number of days to add
                  String dt = sdf.format(c.getTime());  // dt is now the new date
                  display.setText(dt);
            }
        };
person Amy    schedule 15.12.2015
comment
Спасибо, но когда я выбираю другую дату, в текстовом представлении отображается только последняя дата, т.е. если я выбираю сегодняшнюю дату, она отображает 2016-03-24, когда я выбираю через 3 дня после сегодняшнего дня, отображается та же дата 2016-03-24 @Amy - person Spartons; 15.12.2015
comment
в этом случае измените листнер OnDateChangedListener - person Amy; 15.12.2015
comment
изменить OnDateSetListener на OnDateChangedListener - person Amy; 15.12.2015
comment
OnDateChangedListener недоступен @Amy - person Spartons; 15.12.2015
comment
@Spartons Я ответил, что вы разместили ответ на вопрос. Для другого запроса опубликуйте другой ответ. Я думаю, что этот ответ работает в соответствии с вашими потребностями, поэтому его следует принять. - person Amy; 15.12.2015
comment
Как мы можем сказать это? Если я выбрал другую дату, она хочет отображать новую дату, но отображает ту же дату - person Spartons; 15.12.2015
comment
Вашему слушателю не звонят каждый раз - person Amy; 15.12.2015
comment
я знаю, что, как решить это? @Эми - person Spartons; 15.12.2015
comment
но ваш вопрос не связан с этим уважаемый - person Amy; 15.12.2015

Попробуйте что-нибудь вроде этого

Date dtStartDate=//User inputs start date. 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");

Calendar c = Calendar.getInstance();
c.setTime(dtStartDate);
c.add(Calendar.DATE, 100);  // number of days to add
String datePlus100 = sdf.format(c.getTime());  // datePlus100 shows date inputted + 100 days!
person Zain    schedule 15.12.2015
comment
Он отображает дату, но отображает ту же дату, когда я выбрал другую дату ... т. е. если я выбираю сегодняшнюю дату, она отображает 2016-03-24, когда я выбираю 3 дня после сегодня, она отображает ту же дату 2016-03-24. Листнер не вызывается каждый раз, как решить эту проблему ?? @Зейн - person Spartons; 15.12.2015

Этот код работает. Я не могу понять, как слушатель не может обрабатывать действия в вашем решении.

import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;

@Override
public void onClick(View v) {
    showDialog(0);
}

@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
      if (id == 0) {
        return new DatePickerDialog(MainActivity.this, datePickerListener, year, month, day);
      }
      return super.onCreateDialog(id);
    }

OnDateSetListener myCallBack = new OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear,
    int dayOfMonth) {
  display.setText("set date from calendar as answered upper");
  }
};
person Stanislav Bondar    schedule 15.12.2015