Java 试图通过按Enter键将EditText的内容添加到ListView
我试图通过按Enter键将EditText的内容添加到列表视图中,但当我按Enter键时,EditText字段会变大,列表中不会添加任何内容,也不会显示任何内容Java 试图通过按Enter键将EditText的内容添加到ListView,java,android,Java,Android,我试图通过按Enter键将EditText的内容添加到列表视图中,但当我按Enter键时,EditText字段会变大,列表中不会添加任何内容,也不会显示任何内容 import java.util.ArrayList; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.view.KeyEvent; import android.view.Menu; import an
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class ToDoListActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_do_list);
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);
myEditText.setOnKeyListener(new View.OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
if ((keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
|| (keyCode == KeyEvent.KEYCODE_ENTER)) {
toDoItems.add(0, myEditText.getText().toString());
aa.notifyDataSetChanged();
myEditText.setText("");
return true;
}
return false;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.to_do_list, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
if (id == R.id.action_menu) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint" />
<ListView
android:id="@+id/myListView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
import java.util.ArrayList;
导入android.os.Bundle;
导入android.support.v7.app.ActionBarActivity;
导入android.view.KeyEvent;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.view.view.OnKeyListener;
导入android.widget.ArrayAdapter;
导入android.widget.EditText;
导入android.widget.ListView;
公共类ToDoListativity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u to\u do\u列表);
ListView myListView=(ListView)findViewById(R.id.myListView);
final EditText myEditText=(EditText)findViewById(R.id.myEditText);
最终ArrayList toDoItems=新ArrayList();
最终阵列适配器aa;
aa=新阵列适配器(此,
android.R.layout.simple_list_item_1,toDoItems);
myListView.setAdapter(aa);
myEditText.setOnKeyListener(新视图.OnKeyListener(){
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
if(event.getAction()==KeyEvent.ACTION\u向下)
if((keyCode==KeyEvent.keyCode\u DPAD\u中心)
||(keyCode==KeyEvent.keyCode\u ENTER)){
添加(0,myEditText.getText().toString());
aa.notifyDataSetChanged();
myEditText.setText(“”);
返回true;
}
返回false;
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单至待办事项列表,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
if(id==R.id.action\u菜单){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
aa.notifyDataSetChanged();有时不刷新列表视图
在此声明之后
toDoItems.add(0, myEditText.getText().toString());
打印toDoItems中的项目。如果将该值插入arraylist,则问题在于aa.notifyDataSetChanged()。如果这是问题所在,则必须检查刷新列表视图的其他方法。notifyDataSetChanged();有时不刷新列表视图
在此声明之后
toDoItems.add(0, myEditText.getText().toString());
打印toDoItems中的项目。如果将该值插入arraylist,则问题在于aa.notifyDataSetChanged()。如果这是问题所在,则必须检查刷新列表视图的其他方法。notifyDataSetChanged();有时不刷新列表视图
在此声明之后
toDoItems.add(0, myEditText.getText().toString());
打印toDoItems中的项目。如果将该值插入arraylist,则问题在于aa.notifyDataSetChanged()。如果这是问题所在,则必须检查刷新列表视图的其他方法。notifyDataSetChanged();有时不刷新列表视图
在此声明之后
toDoItems.add(0, myEditText.getText().toString());
打印toDoItems中的项目。如果将该值插入arraylist,则问题在于aa.notifyDataSetChanged()。如果这是问题所在,您必须检查刷新列表视图的其他方法-
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint"
android:maxLines="1" />
})) 试试这个-
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint"
android:maxLines="1" />
})) 试试这个-
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint"
android:maxLines="1" />
})) 试试这个-
<EditText
android:id="@+id/myEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/addItemHint"
android:maxLines="1" />
})) 是
myEditText.setText(“”)代码>实际被调用?您应该尝试添加一些System.out.println()代码>要调试的语句。请参阅IsmyEditText.setText(“”)代码>实际被调用?您应该尝试添加一些System.out.println()代码>要调试的语句。请参阅IsmyEditText.setText(“”)代码>实际被调用?您应该尝试添加一些System.out.println()代码>要调试的语句。请参阅IsmyEditText.setText(“”)代码>实际被调用?您应该尝试添加一些System.out.println()代码>要调试的语句。在放入System.out.println(toDoItems)后,看不到任何内容被打印出来;在toDoItems.add()之后,在放入System.out.println(toDoItems)之后不会打印任何内容;在toDoItems.add()之后,在放入System.out.println(toDoItems)之后不会打印任何内容;在toDoItems.add()之后,在放入System.out.println(toDoItems)之后不会打印任何内容;toDoItems.add()之后,如果此答案解决了您的问题,请将其标记为正确答案。如果此答案解决了您的问题,请将其标记为正确答案。如果此答案解决了您的问题,请将其标记为正确答案。如果此答案解决了您的问题,请将其标记为正确答案。