Android列表刷新

时间:2011-04-18 17:03:27

标签: android

我正在努力刷新Android中的列表,但似乎无法做到正确。

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

我是否正确地说这应该在您查看时刷新列表,否则它将重建列表并且您仍然需要刷新视图?

如果有人对建议列表的定位有任何建议,我很乐意听到。

1 个答案:

答案 0 :(得分:1)

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

我的经验是在扩展列表适配器类实例上调用notifyDataSetChanged()会立即导致刷新显示的列表View。因此,只要在我的适配器实例上调用.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;

我只是把这一切都放下来以防万一与你的情况有任何相似之处,但我们真的需要了解你的代码。