使用EditText中的数据输入填充ListView

时间:2017-11-22 23:05:18

标签: android listview android-arrayadapter

我正在尝试使用从编辑文本中获取的数据填充列表视图。该过程从编辑文本中获取数据并将它们放入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只能运行一次。

enter image description here

1 个答案:

答案 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);