Fragment中的notifyDataSetChanged()不刷新ListView [英] notifyDataSetChanged() in Fragment is not refreshing listview

查看:541
本文介绍了Fragment中的notifyDataSetChanged()不刷新ListView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试显示从url提取的项目列表,但我一次只想提取20个项目...所以我实现了一个OnScrollListener来在用户位于最后一个时提取项目列表视图的项目.

I'm trying to display a list of items fetched from a url but I only want to fetch 20 of them at a time... so I've implemented an OnScrollListener to fetch the items when the users is on the last item of the listview.

项目已获取,但我唯一的问题是列表视图未更新:这是到目前为止的代码:

The items are fetched but my only problem is that the listview is not updated: here's my code so far:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    parentView = inflater.inflate(R.layout.activity_event_speakers_alphabetically, container,false);
    listView = (ListView) parentView
            .findViewById(R.id.speakersAlphabeticallyActivityList);
    nameOrderedMembers.addDataBatch(communityMembers);
    nameOrderedAdapter = DelegateViewStateAdapterFactory
            .makeUserListAdapter(getActivity(),
                    nameOrderedMembers.getSortedData(), DelegateViewStateAdapterFactory.OrderType.NAME);
    listView.setAdapter(nameOrderedAdapter);
    AQuery aQuery = new AQuery(listView);
    aQuery.id(R.id.speakersAlphabeticallyActivityList).scrolled(new EndlessScrollListener());
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                long arg3) {
            if (nameOrderedAdapter.getItem(arg2) instanceof User) {
                User u = (User) nameOrderedAdapter.getItem(arg2);
                Intent i = new Intent(getActivity(),
                        UserProfileFragmentActivity.class);
                startActivity(i);
            }
        }
    });

    return parentView;
}

现在-在onPostExecute方法的AsynkTask中-我这样通知适配器:

Now - in the AsynkTask in the onPostExecute method - i notify the adapter like this:

communityMembers.addAll(newMembers);
getActivity().runOnUiThread(new Runnable() {
    @Override
    public void run() {
    nameOrderedAdapter.addAll(communityMembers);
    nameOrderedAdapter.notifyDataSetChanged();
    }
  });

但是列表视图不会刷新-仅当我返回并重新打开活动时-显示新数据.

but the listview doesn't refresh - only if I go back and reopen the activity - the new data is shown.

那么,如何通知适配器要显示的新数据呢?

So how can I notify the adapter that there's new data to display?

推荐答案

notifyDataSetChanged()

这篇关于Fragment中的notifyDataSetChanged()不刷新ListView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆