11
11
import android .net .Uri ;
12
12
import android .os .Bundle ;
13
13
import android .os .Environment ;
14
+ import android .os .Handler ;
14
15
import android .provider .OpenableColumns ;
15
16
import android .util .Base64 ;
16
17
import android .util .Log ;
47
48
import java .io .InputStream ;
48
49
import java .util .ArrayList ;
49
50
import java .util .Calendar ;
51
+ import java .util .Date ;
50
52
import java .util .List ;
51
53
52
54
public class ChatActivity extends AppCompatActivity
53
55
implements MessageHolders .ContentChecker <Message >,
54
- MessagesListAdapter .OnMessageLongClickListener <Message > {
56
+ MessagesListAdapter .OnMessageLongClickListener <Message >,
57
+ MessagesListAdapter .OnLoadMoreListener {
55
58
56
59
private static final int PICK_FILE_REQUEST = 1 ;
57
60
private static final int PICK_IMAGE_REQUEST = 2 ;
@@ -68,9 +71,11 @@ public class ChatActivity extends AppCompatActivity
68
71
69
72
MessagesList messagesList ;
70
73
protected final String senderId = "1" ;
74
+ private static final int TOTAL_MESSAGES_COUNT = 20 ;
75
+ private Date lastLoadedDate ;
71
76
72
77
MessagesListAdapter <Message > adapter ;
73
- int cnt = 0 ;
78
+ int cnt = 0 ;//Sets message counter id
74
79
75
80
Button btnSend ;
76
81
ImageButton btnAttachment , btnImage ;
@@ -87,22 +92,7 @@ protected void onCreate(Bundle savedInstanceState) {
87
92
setContentView (R .layout .activity_chat_alternate );
88
93
89
94
user = (User ) getIntent ().getSerializableExtra ("user" );
90
- messageArrayList = new ArrayList <Message >();
91
- gson = new Gson ();
92
95
93
- PREFERENCE_FILE_KEY = user .getId ();
94
- sharedPref = this .getSharedPreferences (
95
- PREFERENCE_FILE_KEY , Context .MODE_PRIVATE );
96
- editor = sharedPref .edit ();
97
-
98
- String jsonDataString = sharedPref .getString (SHARED_PREFERENCES_KEY_MESSAGE_LIST ,"" );
99
- if (jsonDataString .length () > 0 ) {
100
- Message messageArray [] = gson .fromJson (jsonDataString , Message [].class );
101
- for (Message msg : messageArray ) {
102
- messageArrayList .add (msg );
103
- }
104
- Log .e ("MESSAGE_SIZE" , messageArrayList .size () + "" );
105
- }
106
96
messageReceiveServer = new MessageReceiveServer (ShowInfoActivity .getSelfIpAddress (), ShowInfoActivity .getSelfPort (), this );
107
97
108
98
Toolbar toolbar = findViewById (R .id .toolbar );
@@ -154,6 +144,24 @@ public void loadImage(ImageView imageView, @Nullable String url, @Nullable Objec
154
144
ta .recycle ();
155
145
156
146
adapter .setOnMessageLongClickListener (this );
147
+
148
+ messageArrayList = new ArrayList <Message >();
149
+ gson = new Gson ();
150
+
151
+ PREFERENCE_FILE_KEY = user .getId ();
152
+ sharedPref = this .getSharedPreferences (
153
+ PREFERENCE_FILE_KEY , Context .MODE_PRIVATE );
154
+ editor = sharedPref .edit ();
155
+
156
+ String jsonDataString = sharedPref .getString (SHARED_PREFERENCES_KEY_MESSAGE_LIST ,"" );
157
+ if (jsonDataString .length () > 0 ) {
158
+ Message messageArray [] = gson .fromJson (jsonDataString , Message [].class );
159
+ for (Message msg : messageArray ) {
160
+ messageArrayList .add (msg );
161
+ }
162
+ adapter .addToEnd (messageArrayList ,false );
163
+ Log .e ("MESSAGE_SIZE" , messageArrayList .size () + "" );
164
+ }
157
165
}
158
166
159
167
private void setClipboard (Context context , String text ) {
@@ -498,4 +506,30 @@ public void onMessageLongClick(Message message) {
498
506
downloadManager .addCompletedDownload (message .getId () + message .getFilename (), message .getId () + message .getFilename (), true , "image/*" , file .getAbsolutePath (), file .length (), true );
499
507
}
500
508
}
509
+
510
+ @ Override
511
+ public void onLoadMore (int page , int totalItemsCount ) {
512
+ Log .i ("TAG" , "onLoadMore: " + page + " " + totalItemsCount );
513
+ if (totalItemsCount < TOTAL_MESSAGES_COUNT ) {
514
+ loadMessages ();
515
+ }
516
+ }
517
+
518
+ protected void loadMessages () {
519
+ new Handler ().postDelayed (new Runnable () { //imitation of internet connection
520
+ @ Override
521
+ public void run () {
522
+ Log .e ("load" ,"Ashche" );
523
+ ArrayList <Message > more_messages = new ArrayList <>();
524
+ for (int i =0 , j =0 ; i <messageArrayList .size () && j <10 ; i ++){
525
+ if (messageArrayList .get (i ).getCreatedAt ().before (lastLoadedDate )){
526
+ more_messages .add (messageArrayList .get (i ));
527
+ j ++;
528
+ }
529
+ }
530
+ lastLoadedDate = more_messages .get (more_messages .size () - 1 ).getCreatedAt ();
531
+ adapter .addToEnd (more_messages , false );
532
+ }
533
+ }, 500 );
534
+ }
501
535
}
0 commit comments