Java – chat application in Android so that sender and receiver messages should be on different sides
                                        
                    •
                    Android                                    
                 protected void onPostExecute( ArrayList<HashMap<String,String>> myArrayList)//    for arraylist(ArrayList<String> result)
   {                            
       for (HashMap<String, String> data : myArrayList)
      {
           String sender_no = data.get(TAG_SENDER_NO);
           String msg1=data.get(TAG_SEN_MSG);
           String receiver_no=data.get(TAG_RECEIVER_NO);
           if(sender_no.equals(senderno))
           {
           listadapter adapter = new SimpleAdapter(SinglechatActivity.this, myArrayList,R.layout.list_row_layout_even, 
           new String[] { TAG_SEN_MSG },new int[] { R.id.message_me });
        //  CustomList adapter= new CustomList(SinglechatActivity.this,myArrayList);//sender_no,  msg1,   receiver_no);
         ListView  lv = (ListView) findViewById(R.id.listview);
           lv.setAdapter( adapter);
          }
           else
           {
               listadapter adapter = new SimpleAdapter(SinglechatActivity.this, myArrayList,R.layout.list_row_layout_odd, 
                       new String[] { TAG_SEN_MSG },new int[] { R.id.message_frnd });
                //  CustomList adapter= new CustomList(SinglechatActivity.this,  sender_no,  msg1,   receiver_no);
                 ListView  lv = (ListView) findViewById(R.id.listview);
                   lv.setAdapter( adapter);
           }
Here, I want to leave messages on the right and left according to the sender and receiver
resolvent:
Use a custom adapter with separate layout for sender and recipient messages. It is called heterogeneous listview
such as it is
public class MyAdapter extends BaseAdapter {
    ArrayList<HashMap<String,String>> messages;
    int SENDER_MESSAGE = 0;
    int RECEIVER_MESSAGE = 1;
    Context context;
    @Override
    public int getCount() {
        return messages.size();
    }
    @Override
    public Object getItem(int position) {
        return messages.get(position);
    }
    @Override
    public long getItemId(int position) {
        return position;
    }
    @Override
    public int getViewTypeCount() {
        return 2;
    }
    @Override
    public int getItemViewType(int position) {
        //This is dummy logic
        //Write your own logic to differentiate between sender and receiver message
        if (position % 2 == 0) {
            return SENDER_MESSAGE;
        }
        else {
            return RECEIVER_MESSAGE;
        }
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            if (getItemViewType(position) == SENDER_MESSAGE) {
                convertView = inflater.inflate(R.layout.sender_message_layout, null);
            } 
            else {
                //Received message
                convertView = inflater.inflate(R.layout.received_message_layout, null);
            }
        }
            //...set text to message layout here
    }
}
For more information about custom adapters, you can refer to
http://www.vogella.com/articles/AndroidListView/article.html#adapterown_ example
For the heterogeneous listview (different row layouts in listview) tutorial, you can refer to this content
http://chrislee.kr/wp/tag/getitemviewtype-tutorial/
                            The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
                        
                                            
                        THE END
                    
                    
                    
                                                        二维码
                        
                        
                                                
                        