java - 数据未绑定(bind)到 recyclerview

标签 java android arraylist cursor android-recyclerview

我有一个回收器 View ,它使用游标中的数据填充了一个数组列表。

Cursor cursor = getCursor(getContext().getContentResolver(), messageUri);
    mAdapter = new MessageAdapter(getContext(), Message_list);
    while(cursor.moveToNext()){
        // The Cursor is now set to the right position
        Message_list.add(Message.getMessage(getContext(), cursor));
    }

    new Thread(new Runnable() {
        @Override
        public void run() {

            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mRecyclerView.setAdapter(mAdapter);
                    Log.d(TAG, "Size Before" + Message_list.size());
                }
            });
        }
    }).start();

只要正确插入数据,该方法就可以正常工作。但是,当我将新条目插入适配器时,适配器会添加该行,但会加载随机前一行中的值,即该行中显示的文本是项目数组列表中存在的另一行中的文本。插入方法如下:

sendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String message = messageText.getText().toString();
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(number, null, message, null, null);
            Message messageSMS = new Message();
            messageSMS.setBody(message);
            messageSMS.setAddress(number);
            messageSMS.setDate(System.currentTimeMillis());
            Log.d(TAG, "" + messageSMS.getBody());
            Log.d(TAG, "Size After" + Message_list.size());
            mAdapter.add(messageSMS);
          mRecyclerView.smoothScrollToPosition(Message_list.size()-1);

        }
    });

这是适配器内的 add 方法:

public void add(Message item) {
    Message_list.add(Message_list.size()-1, item);
    notifyItemInserted(Message_list.size() - 1);
}

预先感谢您的帮助!

最佳答案

将项目添加到 Message_list 后,只需使用 notifyDataSetChanged(),而不是 notifyItemInserted

请引用Document Here

关于java - 数据未绑定(bind)到 recyclerview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33216186/

相关文章:

java - 如何使用Hibernate进行JPA实现?

java - 模拟 : doNothing tries to invoke the void method in Android instrumented test

android - 如何使用 XmlObjectParser 和 XmlNamespaceDictionary? (谷歌-http-客户端)

java - 用于匹配最后一个字母以及句子中单词的正则表达式

java - 在客户端执行代码

java - 使用 Atmosphere + Dropwizard 进行身份验证

android - 修复基于磁盘的缓存大小的最佳方法是什么?android -volley

arraylist - Big O 运行时 - indexOf LinkedList/ArrayList

java - 如何在 Android 中将 ArrayLIst 项转换为 json 对象

java - 如何打印数组中出现次数最多的 5 个数字?