создать макет chatView в android

Я создаю приложение чата, и я думаю о способах создания фактического просмотра чата.

У меня уже есть макет для самого windows чата, но я думал о том, как реализовать сообщения чата.

Я думал о создании TableLayout и каждая строка будет образ пользователя и сообщение чата (или пузырь, а что нет).

Кто-нибудь есть идея о том, как создавать и создавать эти строки?

это то, что я сделал до сих пор:

          

    Как насчет ниже кода –

    main.xml

        

    list_row_layout_even.xml

           

    list_row_layout_odd.xml

           

    Это мой результат –

    Скриншот

    Просто настройте этот пример с учетом ваших потребностей.

    Вместо TableLayout я бы предложил вам создать пользовательский адаптер для ListView . Вам просто нужно проверить условие, чтобы изменить фон макета / представлений внутри getViews() .

    Некоторые темы могут быть полезны для вас:

    1. Android: стиль ListView, например, текстовые сообщения
    2. Android Реализация чата Bubble в ListView

    list_item_message_left.xml

             

    list_item_message_right.xml

             

    bg_msg_from.xml

                        

    bg_msg_you.xml

                        

    triangle_msg_from.xml

                       

    triangle_msg_you.xml

                       

    messageListAdapter.java

      package eddine.charef.mechalikh....; import java.util.List; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class MessagesListAdapter extends BaseAdapter { private Context context; private List messagesItems; public MessagesListAdapter(Context context, List navDrawerItems) { this.context = context; this.messagesItems = navDrawerItems; } @Override public int getCount() { return messagesItems.size(); } @Override public Msg getItem(int position) { return messagesItems.get(position); } @Override public long getItemId(int position) { return position; } @SuppressLint("InflateParams") @Override public View getView(int position, View convertView, ViewGroup parent) { Msg m = messagesItems.get(position); LayoutInflater mInflater = (LayoutInflater) context .getSystemService(Activity.LAYOUT_INFLATER_SERVICE); if (messagesItems.get(position).getleMien()) { convertView = mInflater.inflate(R.layout.list_item_message_right, null); } else { convertView = mInflater.inflate(R.layout.list_item_message_left, null); } TextView lblFrom = (TextView) convertView.findViewById(R.id.lblMsgFrom); TextView txtMsg = (TextView) convertView.findViewById(R.id.txtMsg); txtMsg.setText(m.getMessage()+"\n"+m.getAttach()); lblFrom.setText(m.getDate()+" - "+m.getHeure()); return convertView; } } 

    Msg.java

     package eddine.charef.mechalikh....; public class Msg { private String email, message; private boolean leMien; private String attach; private String cle; private String teleAttach; private String heure; private String date; public Msg(String cle,String email, String message,String attach,boolean leMien,String teleAttach,String heure,String date) { this.email = email; this.message = message; this.leMien = leMien; this.attach = attach; this.cle=cle; this.teleAttach = teleAttach; this.heure = heure; this.date=date; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public boolean getleMien() { return leMien; } public void setleMien(boolean leMien) { this.leMien = leMien; } public String getAttach() { return attach ; } public void setAttach(String attach) { this.attach = attach; } public String getCle() { return cle ; } public void setCle(String cle) { this.cle = cle; } public void setTeleAttach(String teleAttach) { this.teleAttach = teleAttach; } public String getTeleAttach() { return teleAttach ; } public void setHeure(String heure) { this.heure = heure; } public String getHeure() { return heure ; } public String getDate() { return date ; } public void setDate(String date) { this.date = date; } } 

    используйте его так, в своей деятельности

      ListView listMsg; ArrayList listMessages; MessagesListAdapter adapter; listMessages = new ArrayList(); listMessages.add(new Msg(cle,email,message,attach....)); adapter = new MessagesListAdapter(this, listMessages); listMsg.setAdapter(adapter); 

    Основываясь на этом http://www.androidhive.info/2014/10/android-building-group-chat-app-using-sockets-part-1/

    скриншот http://s10.postimg.org/4f24pmp6h/Screenshot_2015_04_01_20_34_56.png

    Я создал библиотеку для создания списка чатов, это может помочь

    https://github.com/himanshu-soni/ChatMessageView

    Давайте будем гением компьютера.