我正在尝试使用从编辑文本中获取的数据填充列表视图。该过程从编辑文本中获取数据并将它们放入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>
返回
“java.lang.IllegalStateException:ArrayAdapter需要资源 ID为TextView“
我尝试在我的XML中添加空TextView 。当我运行代码时,新的textview会添加一个edittext到列表视图,但只有一次。所以这里发生了2个错误。添加的edittext只能运行一次。
答案 0 :(得分:1)
ArrayAdapter adapter = 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);