android - 数组适配器中的 notifyDataSetChanged 和 add(T object) 或 addAll(T... items) 方法有什么区别?
问题描述
我正在尝试学习列表视图和适配器,制作了一个非常基本的应用程序来学习,其中我有一个按钮,可以将字符串对象插入数组适配器的数据源,另一个视图是显示此数据集的列表视图。add() 和 addAll() 方法将数据附加到数据集中,但是当我这样做时,列表视图会显示它,但我没有调用 notifyDataSetChanged 方法,那么为什么列表视图会自行刷新,如果它这样做了,那么我为什么需要方法?谁能帮我澄清一下?add()、addAll() 和 insert() 方法已经使列表视图显示新添加的数据,但如何?那么有什么区别呢?
该应用程序的唯一布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
tools:context=".MainActivity"
android:orientation="vertical"
android:padding="8dp">
<Button
android:id="@+id/insert_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:text="insert data"/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
主要活动代码:
package famiddle.smart.apps.learningandroid;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
Button insertButton;
ArrayAdapter<String> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<String> data = new ArrayList<>();
data.add("hello world");
ListView listView = findViewById(R.id.list_view);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
insertButton = findViewById(R.id.insert_button);
insertButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
adapter.add("hi there");
}
});
}
}
解决方案
推荐阅读
- node.js - node express - 加载类的毫秒数
- docker - 从节点 js 应用程序容器连接 localstack docker 容器
- powershell - Powershell 脚本 - 错误控制并确保数组工作流中的项目顺序
- javascript - 动态添加和删除输入并更新嵌套数组
- python - 您如何汇总列表中的所有值并以有组织的方式打印最终项目及其最终值?
- sql - 查找时间段内的最大重叠间隔
- reactjs - (反应)无法在反应生命周期方法之外连接到 websocket
- python - Kivy 如何在 Spinner 中添加更改日期(下拉菜单)
- c++ - 是否有与 C/C++ Eclipse IDE 一起使用的插件来提供代码建议和自动完成功能?
- wordpress - WooCommerce“将产品导出到 CSV 文件”功能生成空的 csv 文件