#android #listview #view #adapter #chat
Как сделать диалог Чата такого вида? Вот чтобы справа и слева отображалось при приеме и отправке соответственно.. Если бы там только текст был.. то можно было бы Gravity применять.. а там еще картинка.. это получается как то надо две заготовки и скрывать их???? или как то кастомные адаптеры создать? Если есть, приведите подобные кусочки кода.. У меня код такой: public static class MySimpleAdapter extends SimpleAdapter { private List> results; private Context mContext; public MySimpleAdapter(Context context, List > data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.results = data; this.mContext = context; } public View getView(int position, View view, ViewGroup parent) { View v = view; if (v == null) { LayoutInflater vi = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); v = vi.inflate(R.layout.mymsg, null); } if (!results.get(results.size()-1).containsKey("to")) { TextView tt = (TextView) v.findViewById(R.id.mytxt); tt.setText(results.get(results.size()-1).get("msg")); v.findViewById(R.id.mymsg).setVisibility(View.VISIBLE); v.findViewById(R.id.memsg).setVisibility(View.GONE); } else { TextView tt= (TextView) v.findViewById(R.id.metxt); tt.setText(results.get(results.size()-1).get("msg")); v.findViewById(R.id.mymsg).setVisibility(View.GONE); v.findViewById(R.id.memsg).setVisibility(View.VISIBLE); } return v; } } И код отправки/приема: HashMap map = new HashMap (); try { Message message = new Message(); message.setBody(msg.getText().toString()+ "\n"); sendMessage(message); map.put("msg", message.getBody().toString()); map.put("to", message.getTo().toString()); usersList.add(map); sadapter = new MySimpleAdapter(getActivity(), usersList, R.layout.mymsg, from, to); listView.setAdapter(sadapter); sadapter.notifyDataSetChanged(); } catch (NotConnectedException e) { // TODO Auto-generated catch block e.printStackTrace();
Ответы
Ответ 1
План следующий: 1 - создать два типа леяута, для отображения исходящего и входящего сообщения 2 - в адаптере переопределить метод public int getItemViewType(int position) {} 3 - в onBindViewHolder инитить данные
Комментариев нет:
Отправить комментарий