ListView在重绘后消失

时间:2014-09-14 19:21:25

标签: android listview repaint

我有以下代码:

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随后消失了。我需要重新粉刷吗?怎么样?

1 个答案:

答案 0 :(得分:2)

在Android中,我们使用Adapter来保存ListView的数据。无论何时对数据集进行更改,都会通过观察者通知列表Adapter的内容已更改。但是,这需要您明确告知任何观察者有关更改的信息。

您所做的是每次调用点击侦听器时设置活动的整个内容视图,而不是您应该做的是:

1。 将新项添加到适配器:

adapter.add("Whatever"); 

2。 通知任何观察者(在这种情况下是您的ListView)关于更改:

adapter.notifyDataSetChanged();

确保将您的适配器引用为类成员。

干杯。