android - 如何使用适配器在单击按钮时添加 ListView 项目

标签 android android-listview

如何获取在 EditText 中键入的数据并通过单击该窗口中的“提交”将其添加到先前的 Activity ListView 项目中? 我需要做的是:

  1. 创建 EditText 和提交按钮
  2. 在同一个 Activity 中创建 ListView
  3. 通过点击提交按钮,它应该显示在 ListView 中。

我在这里看到了类似的问题:add items to listview dynamically android

但我无法理解答案。有人请解释如何做到这一点。

最佳答案

您只需执行以下操作: 像这样准备您的 xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

  <EditText
     android:id="@+id/editText"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_alignParentTop="true"
     android:layout_toLeftOf="@+id/addItem"
     android:hint="Add a new item to List View" />

  <Button
     android:id="@+id/addItem"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentRight="true"
     android:text="Add" /> 

  <ListView
     android:id="@+id/listView"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_below="@+id/editText" >
  </ListView>

</RelativeLayout>

Activity 如下所示:

public class MainActivity extends Activity {
    EditText editText;
    Button addButton;
    ListView listView;
    ArrayList<String> listItems;
    ArrayAdapter<String> adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.editText);
        addButton = (Button) findViewById(R.id.addItem);
        listView = (ListView) findViewById(R.id.listView);
        listItems = new ArrayList<String>();
        listItems.add("First Item - added on Activity Create");
        adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, listItems);
        listView.setAdapter(adapter);
        addButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                listItems.add(editText.getText().toString());
                adapter.notifyDataSetChanged();
            }
        });
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position,
                    long id) {
                Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_LONG)
                        .show();
            }
        });
    }
}

关于android - 如何使用适配器在单击按钮时添加 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22144891/

相关文章:

Android 默认文本选择器复制文本不起作用

android - 如何使用 pjsua2 android 发送带有自定义 header 的 SIP 消息

java - FileProvider.getUriForFile 返回 NullPointerException

android - 为什么 IntelliJ IDEA 在 Gradle 项目中只创建未对齐的 APK?

android - 在 eclipse galileo 中安装 ADT 8.0.1 的问题

android - 如何保存用户输入并在 ListView 中检索?

java - Android - 在 Android 开发者选项中打开 "Don' t keep activities 会复制我的 FragmentActivity

android - 折叠/展开可扩展 ListView 会更改 checkedtextview 中随机子项的切换

android - 涟漪效应有时不出现

java - 获取列表的大小会使我的程序崩溃