Как отобразить дату за неделю на ListView Android - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть это:

Date date = new Date();
SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
String dateStr = curFormater.format(date);

setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String [] {dateStr}));

Но это отображается только один раз, я хочу сделать это в виде списка.Какие-нибудь идеи?Thx.

Ответы [ 4 ]

1 голос
/ 27 ноября 2011

Попробуйте что-то вроде этого ...

SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy"); 
GregorianCalendar date = new GregorianCalendar();
String[] dateStringArray = new String[7];

for (int day = 0; day < 7; day++) {
    dateStringArray[day] = curFormater.format(date.getTime());
    date.roll(Calendar.DAY_OF_YEAR, true);
}
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dateStringArray));
1 голос
/ 27 ноября 2011

Я не уверен, почему вы хотите, чтобы в виде списка отображалась только одна дата, однако ваша проблема заключается в понимании использования ListView, например, в вашем массиве есть один элемент, как в моем первом примере

String[] = {"hello"};

Это просто покажет один элемент в виде списка, как в вашем примере

String[] = {"hello","how","are","you"};

Покажет 4 строки, если вы хотите показать одну и ту же дату несколько раз, вы можете создать массив, например,

int x = 5;

String[] print = new String[x];

for(int i = 0; i<5; i++) {
   print[i] = date;
}

Это напечатает 5 строк даты

0 голосов
/ 27 ноября 2011

Вы должны действительно попытаться быть немного более наглядным и подробно описать то, что вы действительно хотите. Я предполагаю, что к настоящему времени вы выяснили, как добавить несколько записей в список, основываясь на уже полученных ответах.

Чтобы заполнить свой список последующими датами, просто получите экземпляр календаря и создайте цикл, увеличивая поле дня на единицу с каждым шагом. Что-то вроде:

List<String> dateList = new ArrayList<String>();
Calendar calendar = Calendar.getInstance();
for (int i=0; i<31; i++) {
    calendar.add(Calendar.DATE, 1);
    SimpleDateFormat curFormater = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
    dateList.add(curFormater.format(calendar.getTime()));
}
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dateList));

Это должно показать вам сегодня плюс следующие 31 день в списке.

// edit: yuck, пропустил ответ MisterSquonk, который охватывает аналогичный подход ...

0 голосов
/ 27 ноября 2011

Массив содержит только один элемент:

...new String [] {dateStr}...

Вы можете легко проверить результат, выполнив:

...new String [] {dateStr,dateStr,dateStr,dateStr,dateS}...

затем создайте массив с датами, которые вы хотите показать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...