There is Bidi class. This class has getBaseLevel() method which returns 0
if your text is left-to-right
otherwise 1
(if right-to-left
).
example:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Bidi bidi = new Bidi(userList.get(position).getName(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
if(bidi.getBaseLevel() == 0)
convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
else
convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);
There is another method, baseIsLeftToRight()
that might be better to be used in if statement. Result was same as above.
Bidi bidi = new Bidi(userList.get(position).getName(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
if(bidi.baseIsLeftToRight())
convertView = myInflater.inflate(R.layout.list_add_friends_row, null);
else
convertView = myInflater.inflate(R.layout.list_add_friends_row_mirror, null);
SRC: https://stackoverflow.com/a/18008575/797495
public final class Bidi
extends Object
This class implements the Unicode Bidirectional Algorithm.
A Bidi object provides information on the bidirectional reordering of
the text used to create it. This is required, for example, to properly
display Arabic or Hebrew text. These languages are inherently mixed
directional, as they order numbers from left-to-right while ordering
most other text from right-to-left.
Once created, a Bidi object can be queried to see if the text it
represents is all left-to-right or all right-to-left. Such objects are
very lightweight and this text is relatively easy to process.
If there are multiple runs of text, information about the runs can be
accessed by indexing to get the start, limit, and level of a run. The
level represents both the direction and the 'nesting level' of a
directional run. Odd levels are right-to-left, while even levels are
left-to-right. So for example level 0 represents left-to-right text,
while level 1 represents right-to-left text, and level 2 represents
left-to-right text embedded in a right-to-left run.