我有以下代码:
public void addToList(View view) {
String str = edit.getText().toString();
list.add(str);
this.setContentView(R.layout.activity_view);
//new QueryInList().execute("hi");
// Intent intent = new Intent(this, ViewActivity.class);
//startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
while (bsp <10)
{
list.add(bsp.toString());
bsp++;
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view);
ListView v;
v = (ListView)findViewById(R.id.v);
edit = (EditText)findViewById(R.id.textfield);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1, list );
v.setAdapter(adapter);
//v.setOnClickListener((OnClickListener) this);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
第一种方法是我的onClick方法,只要按下按钮就会引发它。 现在,我的想法是,在这种情况下,gui重新粉刷。 然而,这发生了,Listview随后消失了。我需要重新粉刷吗?怎么样?
答案 0 :(得分:2)
在Android中,我们使用Adapter
来保存ListView
的数据。无论何时对数据集进行更改,都会通过观察者通知列表Adapter
的内容已更改。但是,这需要您明确告知任何观察者有关更改的信息。
您所做的是每次调用点击侦听器时设置活动的整个内容视图,而不是您应该做的是:
1。 将新项添加到适配器:
adapter.add("Whatever");
2。
通知任何观察者(在这种情况下是您的ListView
)关于更改:
adapter.notifyDataSetChanged();
确保将您的适配器引用为类成员。
干杯。