Java 未绑定到回收器视图的数据
我有一个recycler视图,其中填充了使用光标数据的数组列表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
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模式,它是一个回收器视图。