我有一個回收站視圖,它使用遊標中的數據填充數組列表。數據未被綁定到回收站視圖
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);
}
預先感謝幫助!
使用本[適配器(https://gist.github.com/Shywim/127f207e7248fe48400b) – pskink
@pskink我使用一個數組列表 – GibranG
,這是錯誤的做法,如果使用一個'ListView'(而不是'RecyclerView')你會使用'ArrayAdapter'還是'CursorAdapter'? – pskink