2011-04-18 77 views
0

我正在刷新Android的清单,但似乎无法做到。Android列表刷新

我用过notifyDataSetChanged();在我认为适用的每一点上(目前使用对话框输入),但它不起作用,并且我已到了遍布整个地方的地步,它仍然不会刷新。

我是否正确地说这应该刷新列表,而你看着它,或者它会重建列表,你仍然需要刷新视图?

如果任何人有任何关于它的定位与建设名单的建议,我很乐意听到。

+0

代码请... – Wroclai 2011-04-18 17:18:46

+0

您是否在更改适配器本身或您用来创建适配器的某个阵列? – Aleadam 2011-04-18 17:23:21

回答

1

这是一个ListActivity?我目前在我的项目中有一个ListActivity,我有自己的适配器类,它扩展了ArrayAdapter。

我的经验是,在我的扩展列表适配器类实例上调用notifyDataSetChanged()会立即导致正在显示的列表视图的刷新。因此,只要在我的适配器实例上调用.notifyDataSetChanged(),列表View就会重新生成,因此会导致我的适配器的getView()实现被调用以再次生成每个单独的行视图。因此,用户选择一个上下文菜单项,它会触发某些数据更改,然后调用.notifyDataSetChanged(),并立即刷新新数据。

所以要添加一些代码段是明确的:

我有一个ListActivity

public class VarListActivity extends ListActivity { 

在这,我向ArrayAdapter

class VarAdapter extends ArrayAdapter{ 

... 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent){ 

     // Creates the views based upon myData 

    ... 

    @Override 
    public int getCount(){ 

    ... 

我创建数组的一个实例适配器

la = new VarAdapter(this, R.layout.row0); 

当一个上下文菜单中选择

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.a_context_menu_option: 

      // Does a call to perform modifications to myData 

      la.notifyDataSetChanged(); 
     return true; 

我只是夹持这一切下来,以防万一它是任何相似的情况,但我们真的需要知道一点关于你的代码。