使用来自 EditText 的数据输入填充 ListView
Populating a ListView using data input from an EditText
我正在尝试使用从编辑文本中获取的数据来填充列表视图。该过程是从编辑文本中获取数据并将它们放入 ArrayList,然后使用 ArrayAdapter 使用此 ArrayList 来填充列表视图。到目前为止我所做的是:
public class MainActivity extends AppCompatActivity {
List<String> list=new ArrayList<String>();
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
et=(EditText)findViewById(R.id.edittext);
final ListView lv = (ListView) findViewById(R.id.lv);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction()!=KeyEvent.ACTION_DOWN)
return true;
if(KeyEvent.KEYCODE_ENTER == keyCode) {
list.add(et.getText().toString());
System.out.println(list);
ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.main_layout ,list);
lv.setAdapter(adapter);
return true;
}
return false;
}
});
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/edittext"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:textAlignment="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ListView
android:id="@+id/lv"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/edittext"
android:layout_marginStart="13dp"
android:layout_marginTop="19dp"
android:visibility="visible">
</ListView>
</RelativeLayout>
这个returns
"java.lang.IllegalStateException: ArrayAdapter requires the resource
ID to be a TextView"
我尝试将 空 TextView 添加到我的 XML。当我 运行 代码时,新的文本视图被添加到列表视图中,但只有一次。所以这里发生了 2 个错误。正在添加的编辑文本只能使用一次。
ArrayAdapter 适配器 = new ArrayAdapter(MainActivity.this,R.layout.main_layout ,list);
main_layout 布局应该是如下的textview布局。
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text"/>
或您可以像下面那样使用 androids simple textview。
ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1 ,list);
我正在尝试使用从编辑文本中获取的数据来填充列表视图。该过程是从编辑文本中获取数据并将它们放入 ArrayList,然后使用 ArrayAdapter 使用此 ArrayList 来填充列表视图。到目前为止我所做的是:
public class MainActivity extends AppCompatActivity {
List<String> list=new ArrayList<String>();
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
et=(EditText)findViewById(R.id.edittext);
final ListView lv = (ListView) findViewById(R.id.lv);
et.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction()!=KeyEvent.ACTION_DOWN)
return true;
if(KeyEvent.KEYCODE_ENTER == keyCode) {
list.add(et.getText().toString());
System.out.println(list);
ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this,R.layout.main_layout ,list);
lv.setAdapter(adapter);
return true;
}
return false;
}
});
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/edittext"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:textAlignment="center"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ListView
android:id="@+id/lv"
android:layout_width="200dp"
android:layout_height="300dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/edittext"
android:layout_marginStart="13dp"
android:layout_marginTop="19dp"
android:visibility="visible">
</ListView>
</RelativeLayout>
这个returns
"java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView"
我尝试将 空 TextView 添加到我的 XML。当我 运行 代码时,新的文本视图被添加到列表视图中,但只有一次。所以这里发生了 2 个错误。正在添加的编辑文本只能使用一次。
ArrayAdapter 适配器 = new ArrayAdapter(MainActivity.this,R.layout.main_layout ,list);
main_layout 布局应该是如下的textview布局。
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Text"/>
或您可以像下面那样使用 androids simple textview。
ArrayAdapter adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1 ,list);