Давайте рассмотрим следующий пример на примере приложения To Do List.
Project Name: ToDoList
Build Target: Android 2.1
Application Name: ToDoList
Package Name: my.azusdex.todolist
Build Target: Android 2.1
Application Name: ToDoList
Package Name: my.azusdex.todolist
Откройте файл main.xml из каталога res/layout. Измените главную разметку:
Закончив с пользовательским интерфайсом переходим в файл ToDoListActivity.java<?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>
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;
}
});
}
}
Добрый день, я новичок в программировании android.
ОтветитьУдалитьВсё сделал по примеру, но подсвечивается:
myEditText.setOnKeyListener(new OnKeyListener() {
с описанием:
The method setOnKeyListener(View.OnKeyListener) in the type View is not applicable for the arguments (new OnKeyListener(){})
что я не так сделал?
Николай.
Так сразу не могу сказать
Удалитьвыложи весь код, найдем ошибку :-)
Проверил свой код, все работает
дело в том что я пробовал Ваш код вставить, то же самое. Вот на всякий случай выкладываю:
ОтветитьУдалить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;
}
});
}
}
Единственное что нашел, надо добавить библеотеку
ОтветитьУдалитьimport android.view.View.OnKeyListener;
И сразу заработало :-)
спасибо)
ОтветитьУдалитьи у меня тоже заработало,
просто обычно eclips предлагал импорт библиотек, а сейчас он совсем другие подсказки высвечивал (
Сделал все, как здесь, приложение вроде работает....но как вообще добавлять новые записи в ListView? Ввожу текст - а дальше то что? Если нажать Enter - переходит на след строку!
ОтветитьУдалить