ScrollListView can detect when the user reach the bottom on the list.

This commit is contained in:
Pierre HUBERT 2018-07-04 09:06:27 +02:00
parent 767a3b47f5
commit 128b05e3df
6 changed files with 23 additions and 63 deletions

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>

View File

@ -1,36 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" value="$USER_HOME$/Desktop/test" />
<option name="OPTION_SCOPE" value="protected" />
<option name="OPTION_HIERARCHY" value="true" />
<option name="OPTION_NAVIGATOR" value="true" />
<option name="OPTION_INDEX" value="true" />
<option name="OPTION_SEPARATE_INDEX" value="true" />
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
<option name="OPTION_DEPRECATED_LIST" value="true" />
<option name="OTHER_OPTIONS" />
<option name="HEAP_SIZE" />
<option name="LOCALE" />
<option name="OPEN_IN_BROWSER" value="true" />
<option name="OPTION_INCLUDE_LIBS" value="false" />
</component>
<component name="NullableNotNullManager"> <component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" /> <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables"> <option name="myNullables">
<value> <value>
<list size="4"> <list size="5">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
</list> </list>
</value> </value>
</option> </option>
@ -45,17 +25,7 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="false"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -354,9 +354,7 @@ public class ConversationFragment extends Fragment
display_not_msg_notice(false); display_not_msg_notice(false);
//Add the messages to the the main list of messages //Add the messages to the the main list of messages
for(ConversationMessage message : newMessages){ messagesList.addAll(newMessages);
messagesList.add(message);
}
convMessAdapter.notifyDataSetChanged(); convMessAdapter.notifyDataSetChanged();
last_message_id = lastID; last_message_id = lastID;
@ -654,6 +652,11 @@ public class ConversationFragment extends Fragment
} }
@Override
public void onReachBottom() {
}
/** /**
* Actions to do once we downloaded older messages from the server * Actions to do once we downloaded older messages from the server
* *

View File

@ -16,4 +16,9 @@ public interface OnScrollChangeDetectListener {
*/ */
void onReachTop(); void onReachTop();
/**
* This method is triggered when the user reach the bottom (last item) of the list view
*/
void onReachBottom();
} }

View File

@ -79,9 +79,16 @@ public class ScrollListView extends android.widget.ListView {
visibleItemCount, totalItemCount); visibleItemCount, totalItemCount);
//Check if the user reached the top of the view
if(onScrollChangeDetectListener != null && firstVisibleItem == 0 if(onScrollChangeDetectListener != null && firstVisibleItem == 0
&& visibleItemCount > 0) && visibleItemCount > 0)
onScrollChangeDetectListener.onReachTop(); onScrollChangeDetectListener.onReachTop();
//Check if the user reached the bottom of the view
if(onScrollChangeDetectListener != null && totalItemCount > 0 &&
firstVisibleItem + visibleItemCount == totalItemCount)
onScrollChangeDetectListener.onReachBottom();
} }
}); });