исключение выдается после попытки добавить строку в ListView - PullRequest
0 голосов
/ 25 мая 2011

Я новичок в Android, и я получаю исключение, когда я по какой-то причине использую функцию добавления ArrayAdapter.

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

Я пытаюсь добавить записи даты и времени в ListView.

Вот как я это делаю:

Имя файла: ClockTest.java

/* package name here */

/* import section here */
public class ClockTest extends Activity {

/** Called when the activity is first created. */   
public int logButtonState;
public int logEntriesCount;
ImageButton logButton;
ImageButton switchButton;
ListView entriesList;

public ArrayAdapter<String> listAdapter;

public String logEntries[]={
        "Entry1",
        "Entry2",
        "Entry3",
        "Entry4",
        "Entry5"};

public String date_info;
public String time_info;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // State: 0=login, 1=logout
        logButtonState = 0;
        logButton = (ImageButton)findViewById(R.id.log_button);
        switchButton = (ImageButton)findViewById(R.id.switch_button);

        // Infrastructure for entries on-screen presentation
        logEntriesCount = 0;

        listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,                                                     
                                             logEntries);

        entriesList = (ListView)findViewById(R.id.entries_list);
        entriesList.setAdapter(listAdapter);

        // add a click listener to the exit button
        logButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            TextView timeCaptured = (TextView)findViewById(R.id.timeCaptured);
            Calendar c = Calendar.getInstance();
            c.setTime(new Date(System.currentTimeMillis()));

            date_info = String.valueOf(c.get(Calendar.DAY_OF_MONTH))
                        + "."
                        + String.valueOf(c.get(Calendar.MONTH))
                        + "."
                        + String.valueOf(c.get(Calendar.YEAR));

            time_info = String.valueOf(c.get(Calendar.HOUR_OF_DAY))
                + ":" 
                + String.valueOf(c.get(Calendar.MINUTE)) 
                + ":" 
                + String.valueOf(c.get(Calendar.SECOND));

            final String currentTime = asignLogString()
                                + " ["
                                + date_info
                            + " "
                            + time_info
                                + "]";

            logEntriesCount++;
            timeCaptured.setText(currentTime);

            //listAdapter.clear();
            // re-arrange on-screen list view  
            listAdapter.add(currentTime);
            listAdapter.notifyDataSetChanged();             
            entriesList.setAdapter(listAdapter);
              }
         });     
     }
 }

1 Ответ

0 голосов
/ 25 мая 2011

ArrayAdapter имеет неизменяемый список.Вы не сможете добавить что-либо к нему, иначе вы получите исключение UnsupportedOperationException (из того, что я помню).

Вместо использования String [], используйте ArrayList .

Взгляните на Заполните Spinner динамически в Android из текста редактирования для решения.

...