10
10
import android .support .v4 .view .ViewCompat ;
11
11
import android .support .v7 .app .AppCompatDelegate ;
12
12
import android .support .v7 .widget .RecyclerView ;
13
- import android .util .Log ;
14
13
import android .text .format .DateUtils ;
14
+ import android .util .Log ;
15
15
import android .util .TypedValue ;
16
16
import android .view .LayoutInflater ;
17
17
import android .view .View ;
18
18
import android .view .ViewGroup ;
19
19
20
- import com .zulip .android .models .Person ;
21
- import com .zulip .android .models .Stream ;
22
- import com .zulip .android .networking .AsyncPointerUpdate ;
23
-
24
20
import com .squareup .picasso .Picasso ;
25
- import com .zulip .android .util .OnItemClickListener ;
26
21
import com .zulip .android .R ;
27
22
import com .zulip .android .ZulipApp ;
28
23
import com .zulip .android .filters .NarrowFilterPM ;
29
24
import com .zulip .android .filters .NarrowFilterStream ;
30
25
import com .zulip .android .filters .NarrowListener ;
31
26
import com .zulip .android .models .Message ;
32
27
import com .zulip .android .models .MessageType ;
28
+ import com .zulip .android .models .Person ;
29
+ import com .zulip .android .models .Stream ;
30
+ import com .zulip .android .networking .AsyncPointerUpdate ;
31
+ import com .zulip .android .util .OnItemClickListener ;
33
32
import com .zulip .android .util .ZLog ;
34
33
import com .zulip .android .viewholders .LoadingHolder ;
35
34
import com .zulip .android .viewholders .MessageHeaderParent ;
@@ -204,8 +203,10 @@ private int[] getHeaderAndNextIndex(String id) {
204
203
205
204
private void setupLists (List <Message > messageList ) {
206
205
int headerParents = 0 ;
206
+ StringBuilder stringBuilder = new StringBuilder ();
207
207
for (int i = 0 ; i < messageList .size () - 1 ; i ++) {
208
- headerParents = (addMessage (messageList .get (i ), i + headerParents )) ? headerParents + 1 : headerParents ;
208
+ Message message = messageList .get (i );
209
+ headerParents = (addOldMessage (message , i + headerParents , stringBuilder )) ? headerParents + 1 : headerParents ;
209
210
}
210
211
setFooterShowing (false );
211
212
setHeaderShowing (false );
@@ -234,11 +235,8 @@ else if (getItem(position) instanceof Integer && (Integer) getItem(position) ==
234
235
* @param messageAndHeadersCount Count of the (messages + messageHeaderParent) added in the loop from where this function is being called
235
236
* @return returns true if a new messageHeaderParent is created for this message so as to increment the count by where this function is being called.
236
237
*/
237
- public boolean addMessage (Message message , int messageAndHeadersCount ) {
238
-
239
- int [] index = getHeaderAndNextIndex (message .getIdForHolder ());
240
-
241
- if (index [0 ] < 0 ) { //No messageParent for this one
238
+ public boolean addOldMessage (Message message , int messageAndHeadersCount , StringBuilder lastHolderId ) {
239
+ if (!lastHolderId .toString ().equals (message .getIdForHolder ()) || lastHolderId .toString ().equals ("" )) {
242
240
MessageHeaderParent messageHeaderParent = new MessageHeaderParent ((message .getStream () == null ) ? null : message .getStream ().getName (), message .getSubject (), message .getIdForHolder ());
243
241
messageHeaderParent .setMessageType (message .getType ());
244
242
messageHeaderParent .setDisplayRecipent (message .getDisplayRecipient (zulipApp ));
@@ -250,11 +248,12 @@ public boolean addMessage(Message message, int messageAndHeadersCount) {
250
248
notifyItemInserted (messageAndHeadersCount + 1 );
251
249
items .add (messageAndHeadersCount + 2 , message );
252
250
notifyItemInserted (messageAndHeadersCount + 2 );
251
+ lastHolderId .setLength (0 );
252
+ lastHolderId .append (messageHeaderParent .getId ());
253
253
return true ;
254
254
} else {
255
- int nextHeader = (index [1 ] != -1 ) ? index [1 ] : getItemCount (false );
256
- items .add (nextHeader , message );
257
- notifyItemInserted (nextHeader );
255
+ items .add (messageAndHeadersCount + 1 , message );
256
+ notifyItemInserted (messageAndHeadersCount + 1 );
258
257
return false ;
259
258
}
260
259
}
0 commit comments