我正在尝试显示从 url 获取的项目列表,但我一次只想获取其中的 20 个...所以我实现了一个 OnScrollListener 来在用户最后一次访问时获取项目 ListView 的项目。
项目已获取,但我唯一的问题是 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();
}
});
但 ListView 不会刷新 - 只有当我返回并重新打开 Activity 时 - 才会显示新数据。
那么如何通知适配器有新数据要显示呢?
最佳答案
在 notifyDataSetChanged()
之后调用 listView.invalidateViews()
关于android - Fragment 中的 notifyDataSetChanged() 不刷新 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20494478/