Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xabber-android
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
xabber-android
Commits
656dbb91
Commit
656dbb91
authored
Feb 24, 2015
by
Grigory Fedorov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ChatMessageAdapter: refactored and performance should be improved
(Item view is not created every time).
parent
31bce8cd
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
38 additions
and
67 deletions
+38
-67
ChatViewerFragment.java
...c/main/java/com/xabber/android/ui/ChatViewerFragment.java
+1
-4
ChatMessageAdapter.java
...ava/com/xabber/android/ui/adapter/ChatMessageAdapter.java
+37
-63
chat_viewer_incoming_message.xml
app/src/main/res/layout/chat_viewer_incoming_message.xml
+0
-0
chat_viewer_outgoing_message.xml
app/src/main/res/layout/chat_viewer_outgoing_message.xml
+0
-0
No files found.
app/src/main/java/com/xabber/android/ui/ChatViewerFragment.java
View file @
656dbb91
...
@@ -70,8 +70,7 @@ public class ChatViewerFragment extends Fragment {
...
@@ -70,8 +70,7 @@ public class ChatViewerFragment extends Fragment {
View
view
=
inflater
.
inflate
(
R
.
layout
.
chat_viewer_item
,
container
,
false
);
View
view
=
inflater
.
inflate
(
R
.
layout
.
chat_viewer_item
,
container
,
false
);
chatMessageAdapter
=
new
ChatMessageAdapter
(
getActivity
());
chatMessageAdapter
=
new
ChatMessageAdapter
(
getActivity
(),
account
,
user
);
chatMessageAdapter
.
setChat
(
account
,
user
);
listView
=
(
ListView
)
view
.
findViewById
(
android
.
R
.
id
.
list
);
listView
=
(
ListView
)
view
.
findViewById
(
android
.
R
.
id
.
list
);
listView
.
setAdapter
(
chatMessageAdapter
);
listView
.
setAdapter
(
chatMessageAdapter
);
...
@@ -133,8 +132,6 @@ public class ChatViewerFragment extends Fragment {
...
@@ -133,8 +132,6 @@ public class ChatViewerFragment extends Fragment {
public
void
afterTextChanged
(
Editable
text
)
{
public
void
afterTextChanged
(
Editable
text
)
{
if
(
skipOnTextChanges
)
if
(
skipOnTextChanges
)
return
;
return
;
String
account
=
chatMessageAdapter
.
getAccount
();
String
user
=
chatMessageAdapter
.
getUser
();
ChatStateManager
.
getInstance
().
onComposing
(
account
,
user
,
text
);
ChatStateManager
.
getInstance
().
onComposing
(
account
,
user
,
text
);
}
}
...
...
app/src/main/java/com/xabber/android/ui/adapter/ChatMessageAdapter.java
View file @
656dbb91
...
@@ -55,9 +55,12 @@ import java.util.List;
...
@@ -55,9 +55,12 @@ import java.util.List;
*/
*/
public
class
ChatMessageAdapter
extends
BaseAdapter
implements
UpdatableAdapter
{
public
class
ChatMessageAdapter
extends
BaseAdapter
implements
UpdatableAdapter
{
private
static
final
int
TYPE_MESSAGE
=
0
;
private
static
final
int
VIEW_TYPE_COUNT
=
4
;
private
static
final
int
TYPE_HINT
=
1
;
private
static
final
int
TYPE_EMPTY
=
2
;
private
static
final
int
VIEW_TYPE_EMPTY
=
0
;
private
static
final
int
VIEW_TYPE_HINT
=
1
;
private
static
final
int
VIEW_TYPE_INCOMING_MESSAGE
=
2
;
private
static
final
int
VIEW_TYPE_OUTGOING_MESSAGE
=
3
;
private
final
Activity
activity
;
private
final
Activity
activity
;
private
String
account
;
private
String
account
;
...
@@ -80,11 +83,12 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -80,11 +83,12 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
*/
*/
private
String
hint
;
private
String
hint
;
public
ChatMessageAdapter
(
Activity
activity
)
{
public
ChatMessageAdapter
(
Activity
activity
,
String
account
,
String
user
)
{
this
.
activity
=
activity
;
this
.
activity
=
activity
;
messages
=
Collections
.
emptyList
();
messages
=
Collections
.
emptyList
();
account
=
null
;
this
.
account
=
account
;
user
=
null
;
this
.
user
=
user
;
isMUC
=
MUCManager
.
getInstance
().
hasRoom
(
account
,
user
);
hint
=
null
;
hint
=
null
;
appearanceStyle
=
SettingsManager
.
chatsAppearanceStyle
();
appearanceStyle
=
SettingsManager
.
chatsAppearanceStyle
();
ChatsDivide
chatsDivide
=
SettingsManager
.
chatsDivide
();
ChatsDivide
chatsDivide
=
SettingsManager
.
chatsDivide
();
...
@@ -117,29 +121,24 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -117,29 +121,24 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
@Override
@Override
public
int
getViewTypeCount
()
{
public
int
getViewTypeCount
()
{
return
3
;
return
VIEW_TYPE_COUNT
;
}
}
@Override
@Override
public
int
getItemViewType
(
int
position
)
{
public
int
getItemViewType
(
int
position
)
{
if
(
position
<
messages
.
size
())
{
if
(
position
>=
messages
.
size
())
{
return
TYPE_MESSAGE
;
return
hint
==
null
?
VIEW_TYPE_EMPTY
:
VIEW_TYPE_HINT
;
}
else
{
return
hint
==
null
?
TYPE_EMPTY
:
TYPE_HINT
;
}
}
}
private
void
append
(
SpannableStringBuilder
builder
,
CharSequence
text
,
CharacterStyle
span
)
{
final
boolean
incoming
=
((
MessageItem
)
getItem
(
position
)).
isIncoming
();
int
start
=
builder
.
length
();
return
incoming
?
VIEW_TYPE_INCOMING_MESSAGE
:
VIEW_TYPE_OUTGOING_MESSAGE
;
builder
.
append
(
text
);
builder
.
setSpan
(
span
,
start
,
start
+
text
.
length
(),
Spannable
.
SPAN_EXCLUSIVE_EXCLUSIVE
);
}
}
@Override
@Override
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
)
{
public
View
getView
(
int
position
,
View
convertView
,
ViewGroup
parent
)
{
final
int
type
=
getItemViewType
(
position
);
final
int
type
=
getItemViewType
(
position
);
if
(
type
==
TYPE_EMPTY
)
{
if
(
type
==
VIEW_
TYPE_EMPTY
)
{
if
(
convertView
==
null
)
{
if
(
convertView
==
null
)
{
return
activity
.
getLayoutInflater
().
inflate
(
R
.
layout
.
chat_viewer_empty
,
parent
,
false
);
return
activity
.
getLayoutInflater
().
inflate
(
R
.
layout
.
chat_viewer_empty
,
parent
,
false
);
}
else
{
}
else
{
...
@@ -147,7 +146,7 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -147,7 +146,7 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
}
}
}
}
if
(
type
==
TYPE_HINT
)
{
if
(
type
==
VIEW_
TYPE_HINT
)
{
View
view
=
convertView
;
View
view
=
convertView
;
if
(
convertView
==
null
)
{
if
(
convertView
==
null
)
{
view
=
activity
.
getLayoutInflater
().
inflate
(
R
.
layout
.
chat_viewer_info
,
parent
,
false
);
view
=
activity
.
getLayoutInflater
().
inflate
(
R
.
layout
.
chat_viewer_info
,
parent
,
false
);
...
@@ -159,8 +158,20 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -159,8 +158,20 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
return
view
;
return
view
;
}
}
if
(
type
!=
TYPE_MESSAGE
)
{
View
view
=
convertView
;
throw
new
IllegalStateException
();
if
(
convertView
==
null
)
{
final
int
layoutId
;
if
(
type
==
VIEW_TYPE_INCOMING_MESSAGE
)
{
layoutId
=
R
.
layout
.
chat_viewer_incoming_message
;
}
else
if
(
type
==
VIEW_TYPE_OUTGOING_MESSAGE
)
{
layoutId
=
R
.
layout
.
chat_viewer_outgoing_message
;
}
else
{
throw
new
IllegalStateException
();
}
view
=
activity
.
getLayoutInflater
().
inflate
(
layoutId
,
parent
,
false
);
}
}
final
MessageItem
messageItem
=
(
MessageItem
)
getItem
(
position
);
final
MessageItem
messageItem
=
(
MessageItem
)
getItem
(
position
);
...
@@ -168,14 +179,6 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -168,14 +179,6 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
final
String
resource
=
messageItem
.
getResource
();
final
String
resource
=
messageItem
.
getResource
();
final
int
layoutId
;
if
(
incoming
)
{
layoutId
=
R
.
layout
.
chat_viewer_message
;
}
else
{
layoutId
=
R
.
layout
.
chat_viewer_message_own
;
}
View
view
=
activity
.
getLayoutInflater
().
inflate
(
layoutId
,
parent
,
false
);
TextView
textView
=
(
TextView
)
view
.
findViewById
(
R
.
id
.
text
);
TextView
textView
=
(
TextView
)
view
.
findViewById
(
R
.
id
.
text
);
textView
.
setTextAppearance
(
activity
,
appearanceStyle
);
textView
.
setTextAppearance
(
activity
,
appearanceStyle
);
...
@@ -254,6 +257,12 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -254,6 +257,12 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
return
view
;
return
view
;
}
}
private
void
append
(
SpannableStringBuilder
builder
,
CharSequence
text
,
CharacterStyle
span
)
{
int
start
=
builder
.
length
();
builder
.
append
(
text
);
builder
.
setSpan
(
span
,
start
,
start
+
text
.
length
(),
Spannable
.
SPAN_EXCLUSIVE_EXCLUSIVE
);
}
private
void
setUpAvatar
(
MessageItem
messageItem
,
View
view
)
{
private
void
setUpAvatar
(
MessageItem
messageItem
,
View
view
)
{
ImageView
avatarView
=
(
ImageView
)
view
.
findViewById
(
R
.
id
.
avatar
);
ImageView
avatarView
=
(
ImageView
)
view
.
findViewById
(
R
.
id
.
avatar
);
...
@@ -281,27 +290,6 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -281,27 +290,6 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
}
}
}
}
public
String
getAccount
()
{
return
account
;
}
public
String
getUser
()
{
return
user
;
}
/**
* Changes managed chat.
*
* @param account
* @param user
*/
public
void
setChat
(
String
account
,
String
user
)
{
this
.
account
=
account
;
this
.
user
=
user
;
this
.
isMUC
=
MUCManager
.
getInstance
().
hasRoom
(
account
,
user
);
onChange
();
}
@Override
@Override
public
void
onChange
()
{
public
void
onChange
()
{
messages
=
new
ArrayList
<>(
MessageManager
.
getInstance
().
getMessages
(
account
,
user
));
messages
=
new
ArrayList
<>(
MessageManager
.
getInstance
().
getMessages
(
account
,
user
));
...
@@ -331,18 +319,4 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
...
@@ -331,18 +319,4 @@ public class ChatMessageAdapter extends BaseAdapter implements UpdatableAdapter
}
}
return
null
;
return
null
;
}
}
/**
* Contact information has been changed. Renews hint and updates data if
* necessary.
*/
public
void
updateInfo
()
{
String
info
=
getHint
();
if
(
this
.
hint
.
equals
(
info
)
||
(
this
.
hint
!=
null
&&
this
.
hint
.
equals
(
info
)))
{
return
;
}
this
.
hint
=
info
;
notifyDataSetChanged
();
}
}
}
app/src/main/res/layout/chat_viewer_message.xml
→
app/src/main/res/layout/chat_viewer_
incoming_
message.xml
View file @
656dbb91
File moved
app/src/main/res/layout/chat_viewer_
message_own
.xml
→
app/src/main/res/layout/chat_viewer_
outgoing_message
.xml
View file @
656dbb91
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment