Hi I use this answer to make ListView to scroll back from top. However, from user point of view, ListView jumps back from top item to original item. It will be better if there is a way to achieve smooth scrolling (without this jumping) to load more items, meaning ListView keeps at original item position when adding new items without seeing this jumping back action. Is it even possible? I use setSelection(index) to jump back to original item below
for (int i = 0; i < jsonArray.length(); i++) {
String userName = jsonArray.getJSONObject(i).getString("Username");
String messageContent = jsonArray.getJSONObject(i).getString("MessageContent");
String timestamp = jsonArray.getJSONObject(i).getString("TimeStamp");
String convertedTimestamp;
try {
convertedTimestamp = convertTimeToLocal(timestamp);
} catch (ParseException e) {
Log.e(TAG, e.toString());
convertedTimestamp = "";
}
ChatMessage messageObj = new ChatMessage();
messageObj.setSenderName(userName);
messageObj.setOriginalTimeFormat(timestamp);
messageObj.setMessageContent(messageContent);
messageObj.setSendTime(convertedTimestamp);
chatMessages.add(0, messageObj);
chatAdapter.notifyDataSetChanged();
}
if (chatMessages.size() != 0) {
lastMessageTimestamp = chatMessages.get(0).getOriginalTimeFormat();
dataParams.put("TimeStamp", lastMessageTimestamp);
chatListView.post(new Runnable() {
@Override
public void run() {
if (requestType == RequestType.FirstRequest)
chatListView.setSelection(chatMessages.size() - 1);
else
chatListView.setSelection(arrayLength);
chatListView.post(new Runnable() {
@Override
public void run() {
upScrollListener.finishLoading();
}
});
}
});
} else {
//TODO : add notification message to ask user to enter message
}