Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未绑定到回收器视图的数据_Java_Android_Arraylist_Cursor_Android Recyclerview - Fatal编程技术网

Java 未绑定到回收器视图的数据

Java 未绑定到回收器视图的数据,java,android,arraylist,cursor,android-recyclerview,Java,Android,Arraylist,Cursor,Android Recyclerview,我有一个recycler视图,其中填充了使用光标数据的数组列表 Cursor cursor = getCursor(getContext().getContentResolver(), messageUri); mAdapter = new MessageAdapter(getContext(), Message_list); while(cursor.moveToNext()){ // The Cursor is now set to the right pos

我有一个recycler视图,其中填充了使用光标数据的数组列表

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);
}

提前感谢您的帮助

将项目添加到消息列表后,只需使用
notifyDataSetChanged()
,而不是
notifyItemInserted


请参考而不是
notifyItemInserted
将项目添加到邮件列表后,只需使用
notifyDataSetChanged()


请参考

使用此@pskink我使用的是数组列表,这是错误的方法,如果您使用的是
列表视图
(而不是
回收视图
),您会使用
数组适配器
还是
光标适配器
?我使用了您发送给我的链接中的适配器,现在我如何向其中添加项目?您不会,数据已经存储在游标中使用此@pskink我使用的是数组列表,这是错误的方法,如果您使用的是
ListView
(而不是
RecyclerView
)您会使用
ArrayAdapter
还是
CursorAdapter
?我使用了您发送给我的链接中的适配器,现在如何向其中添加项目?您不会,数据已存储在适配器中的CursorUse Holder中。我也使用view Holder模式,它是一个回收器视图。在适配器中使用Holder。我也使用view Holder模式,它是一个回收器视图。