我的应用程序有两个可以插入的表:Contacts表和Messages表。每个表都有一个链接到它的ListView适配器,其想法是当一个新条目插入到任一个表中时,适配器将使用git checkout release/x.x.x
更新并显示在ListView中。我已经使用了Contacts代码,但是当我尝试使用Messages代码(如下所示)时,它会将条目插入表中,但不会更新ListView。 ListView仅在我卸载应用程序或升级SQLite数据库时更新。我已notifyDataSetChanged()
已实现并尝试从notifyDataSetChanged()
更新适配器和光标,但它没有任何区别。我还检查过这些来源,但没有运气:
Android - ListView not being updated after adding to SQLite database unless app is restarted
Android ListView not refreshing after notifyDataSetChanged
onResume()
获取数据并更新适配器:
onPostExecute()
消息适配器类
// Saves all data received into a cursor, which is then saved to the
// List<Message> object
List<Message> arrayOfMessages = dbHelper.getAllMessages();
dbHelper.close();
final MessagesAdapter adapter = new MessagesAdapter(getContext(), arrayOfMessages);
ListView listView = (ListView) getActivity().findViewById(R.id.messages_listview);
listView.setAdapter(adapter);
fragmentsPagerAdapter.notifyDataSetChanged();
swipeRefreshLayout.setRefreshing(false);
以下是处理标签布局和ViewPager的活动:
public class MessagesAdapter extends ArrayAdapter<Message> {
public MessagesAdapter(Context context, List<Message> messages) {
super(context, 0, messages);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
Message message = getItem(position);
// Get rest of convertView...
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
实际上你是在pager适配器而不是在列表视图适配器中应用notifyDataSetChanged,至少它看起来是这样,所以在listView适配器中应用notify DataSetChanged。 如果您在某个片段中定义了列表视图,而不是在片段中创建公共方法来更新数据集(您将在那里调用适配器的notifyDataSetChanged)并将选项卡布局中使用的片段的所有实例存储在某些sparsed数组中,以便您可以使用您的主要活动中的实例调用片段的相应方法。 如果我错了,请评论然后我会更新我的答案,因为我已经实现了这样的事情,我的代码工作得很好..
答案 2 :(得分:0)
所以我感谢大家的回答,但在我终于能够回到这个错误之后,事实证明我的服务器上的GCM实现存在问题。一旦我注释掉Android代码的GCM部分,该列表就会按预期更新自己。我觉得有点傻。无论如何,谢谢你们!