0

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
                }
Community
  • 1
  • 1
Tony Lin
  • 275
  • 3
  • 14

0 Answers0