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