Fragment中的notifyDataSetChanged()不刷新listview

时间:2013-12-10 12:24:57

标签: android listview android-fragments

我正在尝试显示从网址获取的项目列表,但我只想一次获取其中的20个...所以我已经实现了一个OnScrollListener来获取用户最后一个时的项目列表视图的项目。

提取项目但我唯一的问题是listview没有更新:到目前为止这是我的代码:

@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中 - 我这样通知适配器:

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

但列表视图不刷新 - 只有当我返回并重新打开活动时 - 才会显示新数据。

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

3 个答案:

答案 0 :(得分:6)

listView.invalidateViews()

之后致电notifyDataSetChanged()

答案 1 :(得分:3)

ProfileImageId之后添加以下行:

nameOrderedAdapter.notifyDataSetChanged();

答案 2 :(得分:0)

使用

  

notifyDataSetInvalidated()

方法 如果你使用任何自定义ListView或自定义GridView喜欢/ Horizo​​ntalListView