SQLite插入后适配器不更新

时间:2016-05-31 18:37:59

标签: java android sqlite listview

我的应用程序有两个可以插入的表: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...
    }
}   

3 个答案:

答案 0 :(得分:0)

在public getView()

中返回convertView

检查此链接

ViewPager PagerAdapter not updating the View

答案 1 :(得分:0)

实际上你是在pager适配器而不是在列表视图适配器中应用notifyDataSetChanged,至少它看起来是这样,所以在listView适配器中应用notify DataSetChanged。 如果您在某个片段中定义了列表视图,而不是在片段中创建公共方法来更新数据集(您将在那里调用适配器的notifyDataSetChanged)并将选项卡布局中使用的片段的所有实例存储在某些sparsed数组中,以便您可以使用您的主要活动中的实例调用片段的相应方法。 如果我错了,请评论然后我会更新我的答案,因为我已经实现了这样的事情,我的代码工作得很好..

答案 2 :(得分:0)

所以我感谢大家的回答,但在我终于能够回到这个错误之后,事实证明我的服务器上的GCM实现存在问题。一旦我注释掉Android代码的GCM部分,该列表就会按预期更新自己。我觉得有点傻。无论如何,谢谢你们!