Skip to content

Commit 99d4872

Browse files
committed
Loaded messages from sharedpref
1 parent cf8767d commit 99d4872

File tree

1 file changed

+51
-17
lines changed

1 file changed

+51
-17
lines changed

app/src/main/java/com/example/chatfull/ChatActivity.java

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.net.Uri;
1212
import android.os.Bundle;
1313
import android.os.Environment;
14+
import android.os.Handler;
1415
import android.provider.OpenableColumns;
1516
import android.util.Base64;
1617
import android.util.Log;
@@ -47,11 +48,13 @@
4748
import java.io.InputStream;
4849
import java.util.ArrayList;
4950
import java.util.Calendar;
51+
import java.util.Date;
5052
import java.util.List;
5153

5254
public class ChatActivity extends AppCompatActivity
5355
implements MessageHolders.ContentChecker<Message>,
54-
MessagesListAdapter.OnMessageLongClickListener<Message> {
56+
MessagesListAdapter.OnMessageLongClickListener<Message>,
57+
MessagesListAdapter.OnLoadMoreListener{
5558

5659
private static final int PICK_FILE_REQUEST = 1;
5760
private static final int PICK_IMAGE_REQUEST = 2;
@@ -68,9 +71,11 @@ public class ChatActivity extends AppCompatActivity
6871

6972
MessagesList messagesList;
7073
protected final String senderId = "1";
74+
private static final int TOTAL_MESSAGES_COUNT = 20;
75+
private Date lastLoadedDate;
7176

7277
MessagesListAdapter<Message> adapter;
73-
int cnt = 0;
78+
int cnt = 0; //Sets message counter id
7479

7580
Button btnSend;
7681
ImageButton btnAttachment, btnImage;
@@ -87,22 +92,7 @@ protected void onCreate(Bundle savedInstanceState) {
8792
setContentView(R.layout.activity_chat_alternate);
8893

8994
user = (User) getIntent().getSerializableExtra("user");
90-
messageArrayList = new ArrayList<Message>();
91-
gson = new Gson();
9295

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-
}
10696
messageReceiveServer = new MessageReceiveServer(ShowInfoActivity.getSelfIpAddress(), ShowInfoActivity.getSelfPort(), this);
10797

10898
Toolbar toolbar = findViewById(R.id.toolbar);
@@ -154,6 +144,24 @@ public void loadImage(ImageView imageView, @Nullable String url, @Nullable Objec
154144
ta.recycle();
155145

156146
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+
}
157165
}
158166

159167
private void setClipboard(Context context, String text) {
@@ -498,4 +506,30 @@ public void onMessageLongClick(Message message) {
498506
downloadManager.addCompletedDownload(message.getId() + message.getFilename(), message.getId() + message.getFilename(), true, "image/*", file.getAbsolutePath(), file.length(), true);
499507
}
500508
}
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+
}
501535
}

0 commit comments

Comments
 (0)