Здравствуйте. Подскажите пожалуйста. У меня с сервера подгружаются сообщения в `ListView`. Я хочу сделать так....кода строится список в ListView, я хочу что бы моё(usera) сообщение было слева, а сообщение собеседнка выстраивалось с права. Как правильно реализовать подмену item'ов на user.xml или на sobesednik.xml в зависимости от логики по типу: Если ИД юзера в item == моемуИД, то показывай user.xml, иначе....думаю понятно) Подскажите если не трудно, вот мой адаптер, точнее то что я с ним сотворил :)
class ChatAdapter extends SimpleAdapter {
public ChatAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to){
super(context, data, resource, from, to);
}
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
LinearLayout layout = (LinearLayout) v.findViewById(R.id.layoutUsersMsg);
LinearLayout layoutBg = (LinearLayout) v.findViewById(R.id.layoutUsersMsgBg);
layout.setBackground(getResources().getDrawable(R.drawable.lv_msg_styles));
TextView textView = (TextView) v.findViewById(R.id.id_msg_user);
TextView userText = (TextView) v.findViewById(R.id.msg);
String myIDfromList = textView.getText().toString();
if(!myIDfromList.equals(LV_USID)) {
layout.setGravity(Gravity.RIGHT);
layoutBg.setBackground(getResources().getDrawable(R.drawable.user_style_msg));
} else {
layout.setGravity(Gravity.LEFT);
layoutBg.setBackground(getResources().getDrawable(R.drawable.my_style_msg));
}
return v;
}
}
ListView и построение адаптера
String msg = msgList.getString("msg");
String msg_id = msgList.getString("msg_id");
final String msg_id_us = msgList.getString("msg_id_user");
map = new HashMap<String, Object>();
map.put(LV_MSGID, msg_id);
map.put(LV_MSG, msg);
map.put(LV_USID_MSG, msg_id_us);
data.add(map);
}
String[] from = { LV_MSGID, LV_MSG, LV_USID_MSG };
int [] to = { R.id.id_msg, R.id.msg, R.id.id_msg_user };
sAdapter = new ChatAdapter(FriendMsgActivity.this, data, R.layout.activity_friend_msg_adapter, from, to);
sList = (ListView) findViewById(R.id.lvFriendMsg);
sList.setAdapter(sAdapter);
По самой сути этот код вроде как и работает, а вроде и нет :)
Когда загружается ListView, мои сообщения, и сообщения собеседника приняли нужные положения до тех пор пока я не начал листать вниз. Как только я прокручивал скролл обратно на верх, первые два объекта потеряли свои wrap_content и gravity[]. Проще говоря....покажу скрины. На рис.1 показан только что загрузившийся список, на рис2., сама проблема.
-
рис1.
рис.2