Приложение To Do (часть 1)

Давайте рассмотрим следующий пример на примере приложения To Do List.
И так создаем новый проект:
Project Name: ToDoList
Build Target: Android 2.1
Application Name: ToDoList
Package Name: my.azusdex.todolist

Откройте файл main.xml из каталога res/layout. Измените главную разметку:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/myEditText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="New To Do Item" />
   
    <ListView
        android:id="@+id/myListView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
 Закончив с пользовательским интерфайсом переходим в файл ToDoListActivity.java

public class ToDoListActivity extends Activity {
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        //Ссылки на элементы пользовательского интерфейса
        ListView myListView = (ListView)findViewById(R.id.myListView);
        final EditText myEditText = (EditText)findViewById(R.id.myEditText);
       
        //Массив для хранения данных
        final ArrayList<String> todoitems = new ArrayList<String>();
        final ArrayAdapter<String> aa;
        aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, todoitems);
        myListView.setAdapter(aa);
       
        //Обработчик текста внесенного в edittext
        myEditText.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getAction() == KeyEvent.ACTION_DOWN)
                    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
                        todoitems.add(0, myEditText.getText().toString());
                        aa.notifyDataSetChanged();
                        myEditText.setText("");
                        return true;
                    }
                return false;
            }   
        });
    }
}
Ну вот и все для первой части. Тут не вижу нечего сложного, поэтому описываеть не буду. Если есть вопросы то задовайте отвечу.

azusdex

Phasellus facilisis convallis metus, ut imperdiet augue auctor nec. Duis at velit id augue lobortis porta. Sed varius, enim accumsan aliquam tincidunt, tortor urna vulputate quam, eget finibus urna est in augue.

6 комментариев:

  1. Добрый день, я новичок в программировании android.
    Всё сделал по примеру, но подсвечивается:
    myEditText.setOnKeyListener(new OnKeyListener() {
    с описанием:
    The method setOnKeyListener(View.OnKeyListener) in the type View is not applicable for the arguments (new OnKeyListener(){})
    что я не так сделал?

    Николай.

    ОтветитьУдалить
    Ответы
    1. Так сразу не могу сказать
      выложи весь код, найдем ошибку :-)
      Проверил свой код, все работает

      Удалить
  2. дело в том что я пробовал Ваш код вставить, то же самое. Вот на всякий случай выкладываю:

    package com.samples.todo;

    import java.util.ArrayList;

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.ListView;

    public class TodoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView myListView=(ListView)findViewById(R.id.myListView);
    final EditText myEditText=(EditText)findViewById(R.id.myEditText);

    final ArrayList todoItem=new ArrayList();

    final ArrayAdapter aa;
    aa=new ArrayAdapter(this,android.R.layout.simple_list_item_1,todoItem);
    myListView.setAdapter(aa);
    myEditText.setOnKeyListener(new OnKeyListener(){
    public boolean onKey (View v,int keyCode,KeyEvent event){

    if (event.getAction()==KeyEvent.ACTION_DOWN){
    if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER);
    todoItem.add(0,myEditText.getText().toString());
    aa.notifyDataSetChanged();
    myEditText.setText("");
    return true;
    }
    return false;
    }
    });
    }
    }

    ОтветитьУдалить
  3. Единственное что нашел, надо добавить библеотеку

    import android.view.View.OnKeyListener;

    И сразу заработало :-)

    ОтветитьУдалить
  4. спасибо)
    и у меня тоже заработало,
    просто обычно eclips предлагал импорт библиотек, а сейчас он совсем другие подсказки высвечивал (

    ОтветитьУдалить
  5. Сделал все, как здесь, приложение вроде работает....но как вообще добавлять новые записи в ListView? Ввожу текст - а дальше то что? Если нажать Enter - переходит на след строку!

    ОтветитьУдалить