Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用动态数组填充ListView_Android - Fatal编程技术网

Android 使用动态数组填充ListView

Android 使用动态数组填充ListView,android,Android,我有一个EditText框,用户可以输入姓名,然后单击添加按钮,姓名保存到数组playerList并清除该框,以便添加其他姓名 我还有一个关于同一活动的列表视图,该视图将由数组中的名称填充。问题是列表视图似乎没有填充 因此,我尝试使用一个defualt set Stringteststring,您可以在下面看到,它填充了ListViewfine。我的问题是,它为什么不能与数组播放列表一起工作?也许它没有正确地保存到数组 只需更新adapter.notifyDataSetChanged()添加以刷

我有一个
EditText
框,用户可以输入姓名,然后单击添加按钮,姓名保存到数组
playerList
并清除该框,以便添加其他姓名

我还有一个关于同一活动的
列表视图
,该视图将由
数组中的名称填充。问题是
列表视图
似乎没有填充

因此,我尝试使用一个defualt set String
teststring
,您可以在下面看到,它填充了
ListView
fine。我的问题是,它为什么不能与
数组
播放列表
一起工作?也许它没有正确地保存到
数组

只需更新
adapter.notifyDataSetChanged()添加以刷新
列表视图
归功于@Lalit Poptani和@Jave

ArrayList<String> playerList = new ArrayList<String>();
ListView listview;
protected String[] teststring = {"Name 1", "Name 2"};

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.addremove);
ListAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, teststring);
ListView employeeList = (ListView) findViewById(R.id.namelistview);
employeeList.setAdapter(adapter);


Button confirm = (Button) findViewById(R.id.add);
confirm.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText playername = (EditText) findViewById(R.id.userinput);
String name = playername.getText().toString();
playerList.add(name);
playername.setText("");

}});
ArrayList playerList=new ArrayList();
列表视图列表视图;
受保护字符串[]teststring={“名称1”,“名称2”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.addremove);
ListAdapter=new ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,teststring);
ListView employeeList=(ListView)findViewById(R.id.namelistview);
employeeList.setAdapter(适配器);
按钮确认=(按钮)findViewById(R.id.add);
confirm.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
EditText playername=(EditText)findViewById(R.id.userinput);
字符串名称=playername.getText().toString();
playerList.add(名称);
playername.setText(“”);
}});

要在向列表视图中添加新数据后刷新列表视图,必须调用
适配器。notifyDataSetChanged()
。这是刷新,您的列表视图将显示新数据

但在您的情况下,您使用字符串[]填充ListView,因此它无法动态工作。您必须给出
字符串[]
的大小。因此,我建议您使用
ArrayList
本身填充ListView,以便动态添加内容

ListAdapter adapter = new ArrayAdapter<String>
                       (this, android.R.layout.simple_list_item_1,playerList);
ListAdapter=新阵列适配器
(这是android.R.layout.simple\u list\u item\u 1,playerList);

要在向列表视图中添加新数据后刷新列表视图,必须调用
适配器。notifyDataSetChanged()
。这是刷新,您的列表视图将显示新数据

但在您的情况下,您使用字符串[]填充ListView,因此它无法动态工作。您必须给出
字符串[]
的大小。因此,我建议您使用
ArrayList
本身填充ListView,以便动态添加内容

ListAdapter adapter = new ArrayAdapter<String>
                       (this, android.R.layout.simple_list_item_1,playerList);
ListAdapter=新阵列适配器
(这是android.R.layout.simple\u list\u item\u 1,playerList);
您应该在添加新项目后调用,使其使用新数据进行更新

通知附加的观察者基础数据已被删除 已更改,任何反映数据集的视图都应刷新自身

您应该在添加新项目后调用,使其使用新数据进行更新

通知附加的观察者基础数据已被删除 已更改,任何反映数据集的视图都应刷新自身



嘿,比我早4秒回答:p@Lalit应该在哪里调用呢?在调用之后在arrayList中添加数据时,在按钮中单击Matt
adapter.notifyDataSetChanged()
@LalitPoptani Ahh好的,那么我必须将我的
ListAdapter
转换为
final ListAdapter
,你可以,但我要声明
ListAdapter
;全局在onCreate上面。嘿,在我前面回答4秒:p@Lalit应该在哪里调用呢?当你在arrayL中添加数据时,请按一下按钮就在该调用
adapter.notifyDataSetChanged()之后
@LalitPoptani Ahh好的,那么我必须将我的
ListAdapter
转换为
final ListAdapter
,你可以,但我会说声明
ListAdapter
;全局高于onCreate。你试过打印数组值吗?我指的是playerlist值。??数组填充是否正常?如果是,那么你必须调用无论何时更新适配器,都要使用notifyDataSetChnaged()。您是否尝试打印数组值,我是指播放列表值..???数组填充是否正常..???如果是,则必须调用notifyDataSetChnaged()无论何时更新适配器。应在何处调用它?就在您更新列表之后。它基本上告诉它其中有新项。因此,它将在
playerList.add(name);
Cool之后调用,但是获取错误
类型ListAdapter的notifyDataSetChanged()方法未定义。
::啊,您可以(应该)将其定义为ArrayAdapter而不是ListAdapter:
ArrayAdapter=new ArrayAdapter(args);
应该在哪里调用它?就在您更新列表之后。它基本上告诉它其中有新项目。因此它将位于
playerList.add(name)之后
很酷,但是获取错误时,类型ListAdapter的notifyDataSetChanged()方法未定义。
:/Ah,您可以(应该)将其定义为ArrayAdapter而不是ListAdapter:
ArrayAdapter=new ArrayAdapter(args);