воскресенье, 29 января 2012 г.

Приложение 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;
            }   
        });
    }
}
Ну вот и все для первой части. Тут не вижу нечего сложного, поэтому описываеть не буду. Если есть вопросы то задовайте отвечу.

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 - переходит на след строку!

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