> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# UI Components

> UI Components — CometChat documentation.

**UI Components** are building a block of the UI Kit. **UI Components** are a set of custom classes specially designed to build a feature-rich chat app. To achieve high customizability while building an app one can use the UI Components. There are different UI Components available in the UI Kit library.

## CometChatUI

**CometChatUI** is an option to launch a fully functional chat application using the UI Kit. In **CometChatUI** all the UI Components are interlinked and work together to launch a fully functional chat on your mobile application.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/k0f_g7UwNe_JINeP/images/45002731-1625480152-a3d5f721eb5f46fc3c1e01001c515b2a.png?fit=max&auto=format&n=k0f_g7UwNe_JINeP&q=85&s=cef1753d2bb5ee147d1c5ae3108faa9f" width="4260" height="2800" data-path="images/45002731-1625480152-a3d5f721eb5f46fc3c1e01001c515b2a.png" />
</Frame>

CometChatUI is an Activity class, so you can launch `CometChatUI` using the below code snippet Make sure to add the following code snippet after `onSuccess` of CometChat login.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    startActivity(new Intent(this, CometChatUI.java))   //Replace "this" with Activity Ex: MainActivity.this
    ```
  </Tab>
</Tabs>

<Note>
  Make sure that the above code snippet is added after `onSuccess` of CometChat login.
</Note>

***

## CometChatConversationList

The **CometChatConversationList** is Fragment which will help you to display list of recent conversations. The Fragment has all the necessary listeners and methods required to display the list of conversations.

### Usage

In your `layout.xml` add the following snippet to use the `CometChatConversationListScreen`.Adding the following code snippet will give you a fully working list of conversations.

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <fragment
    android:id="@+id/conversationList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    class=" com.cometchat.pro.uikit.
            ui_components.chats.CometChatConversationList "
            />
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/mkn0UqPQ5BXljCV1/images/96a383dc-25e9adb-group_30-f965f1409766359da23bb8a77f55db26.png?fit=max&auto=format&n=mkn0UqPQ5BXljCV1&q=85&s=c972848ba03708a0b7352ccb67f18ddd" width="488" height="792" data-path="images/96a383dc-25e9adb-group_30-f965f1409766359da23bb8a77f55db26.png" />
</Frame>

<Note>
  Note About setItemClickListener on CometChatConversationList

  To get click event of the list you must use `setItemClickListener` . The `setItemClickListener` has `OnItemClick()` on handle single click and `OnItemClick` to handle long click events.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatConversationList.setItemClickListener(new OnItemClickListener<Conversation>()
            {
    @Override
    public void OnItemClick(Conversation conversation, int position) {
            //Perform Your Action
            }

    @Override
    public void OnItemLongClick(Conversation var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

## CometChatUserList

The `CometChatUserList` is a fragment with a List of users. The Fragment has all the necessary listeners and methods required to display the user's list.

### Usage

In your `layout.xml` add the following snippet to use the `CometChatUserList`. Adding the following code snippet will give you a fully working list of users.

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <fragment
    android:id="@+id/userList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    class="com.cometchat.pro.uikit
            .ui_components.users.user_list.CometChatUserList"
            />
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/JSRiWiPGBHsJZFCg/images/9d886cea-2b9ad69-group_32-509daec9703bb45748b1856eb9384b67.png?fit=max&auto=format&n=JSRiWiPGBHsJZFCg&q=85&s=3799c0b790de1304c95174735fed0209" width="438" height="750" data-path="images/9d886cea-2b9ad69-group_32-509daec9703bb45748b1856eb9384b67.png" />
</Frame>

<Note>
  Note About setItemClickListener on CometChatUserList

  To get click event of the list you must use `setItemClickListener`. The `setItemClickListener` has `OnItemClick()` on handle single click and `OnItemClick` to handle long click events.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatUserList.setItemClickListener(new OnItemClickListener<User>()
            {
    @Override
    public void OnItemClick(User user, int position) {
            //Perform Your Action
            }

    @Override
    public void OnItemLongClick(User var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

## CometChatGroupList

The `CometChatGroupList` is a fragment with a List of groups Fragment has all the necessary listeners and methods required to display the list of groups

### Usage

In your `layout.xml` add the following snippet to use the `CometChatGroupList`.Adding the following code snippet will give you a full working list of groups.

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <fragment
    android:id="@+id/groupList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    class="com.cometchat.pro.uikit
            .ui_components.groups.group_list.CometChatGroupList"
            />
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/19qJLi95IaEk2j9s/images/fedd26eb-036940f-group_33-4d611a98845f18221c04b88f13bcd530.png?fit=max&auto=format&n=19qJLi95IaEk2j9s&q=85&s=f706fc63cac29c9d0b31d81dd0204265" width="418" height="758" data-path="images/fedd26eb-036940f-group_33-4d611a98845f18221c04b88f13bcd530.png" />
</Frame>

<Note>
  Note About setItemClickListener on CometChatGroupList

  To get click event of the list you must use `setItemClickListener`. The `setItemClickListener` has `OnItemClick()` on handle single click and `OnItemClick` to handle long click events.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatGroupList.setItemClickListener(new OnItemClickListener<Group>()
            {
    @Override
    public void OnItemClick(Group group, int position) {
            //Perform your action
            }

    @Override
    public void OnItemLongClick(Group var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

## CometChatMessageList

`CometChatMessageList` is a fragment that consists of send and received messages. It is capable of sending and receiving different types of messages such as text, image, and documents.

### Usage

To use `CometChatMessageList` follow the below code snippets. `CometChatMessageList` is a dynamic so it will require some arguments. Launch CometChatChatMessageListActivity using below code and pass the required parameters in intent.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    Intent intent = new Intent(YOURACTIVITY.this, CometChatMessageListActivity.class);
            intent.putExtra(UIKitConstants.IntentStrings.UID, user.getUid());
            intent.putExtra(UIKitConstants.IntentStrings.AVATAR, user.getAvatar());
            intent.putExtra(UIKitConstants.IntentStrings.STATUS, user.getStatus());
            intent.putExtra(UIKitConstants.IntentStrings.NAME, user.getName());
            intent.putExtra(UIKitConstants.IntentStrings.LINK,user.getLink());
            intent.putExtra(UIKitConstants.IntentStrings.TYPE, CometChatConstants.RECEIVER_TYPE_USER);
            startActivity(intent);
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/7a4hqm7gLVRmX34O/images/02ac29b1-f5e5c31-group_24-7d25f42b217faf0c488f279bb2aed507.png?fit=max&auto=format&n=7a4hqm7gLVRmX34O&q=85&s=b492be7c9b614d4a4b4aa75d903be7bc" width="1098" height="1902" data-path="images/02ac29b1-f5e5c31-group_24-7d25f42b217faf0c488f279bb2aed507.png" />
</Frame>

## CometChatCallList

You can use the CometChatCallList to get a list of all the calls made by the logged-in user to other users and groups.

### Usage

Add the following code in your `layout.xml`

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <fragment
    android:id="@+id/groupList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    class="com.cometchat.pro.uikit
            .ui_components.groups.group_list.CometChatGroupList"
            />
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/2JiXkJ8lq6PmPGlJ/images/73301a8d-8ec73a2-group_31-d7222819bbd06871770abb1d17e9fd1c.png?fit=max&auto=format&n=2JiXkJ8lq6PmPGlJ&q=85&s=f7ace9931a8593f3019027b0070a6957" width="434" height="768" data-path="images/73301a8d-8ec73a2-group_31-d7222819bbd06871770abb1d17e9fd1c.png" />
</Frame>

## CometChatUserProfile

`CometChatUserProfile` is a fragment which provides detail about the currently logged-in user in the CometChat.

### Usage

Add the following code in your `layout.xml`

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <fragment
    android:id="@+id/userInfo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
    class="com.cometchat.pro.uikit
            .ui_components.userprofile.CometChatUserProfile"
            />
    ```
  </Tab>
</Tabs>

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/PaxBG9I1yMoeQmt2/images/33436158-8472e7d-group_34-f74cd1e468b06b47eba606e11c6b9f45.png?fit=max&auto=format&n=PaxBG9I1yMoeQmt2&q=85&s=c22181cb93783ef64e7589793f393134" width="442" height="764" data-path="images/33436158-8472e7d-group_34-f74cd1e468b06b47eba606e11c6b9f45.png" />
</Frame>

## Shared

There are certain core components that are being used everywhere in `uiKit` library. You will find those components in `shared` folder under `ui_components`. Below are core components that are being used in `uiKit` library.

### CometChatAvatar

This is an image view customize only to display Avatar. This view can be used with image URLs as well as with CometChat objects like User and Group

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/21UBnagXOw-XG0Sv/images/b00627b4-1623200062-d6a87eedb04fc11e26b4e97693ca9c5f.gif?s=944a97e5d8c6b55317f82e2f6914626d" width="600" height="1067" data-path="images/b00627b4-1623200062-d6a87eedb04fc11e26b4e97693ca9c5f.gif" />
</Frame>

#### Usage

In your `layout.xml` add the following code snippet.

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatAvatar.CometChatAvatar
        android:id="@+id/av_user"
        android:layout_width="60dp"
        app:avatar_shape="@string/circle"
        android:layout_height="60dp" />
    ```
  </Tab>
</Tabs>

Here `avatar_shape` is a static property. It should be either `circle` or `rectangle`. whereas the avatar URL needs to be set dynamically following is the sample code for the same.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatAvatar avatar = findViewById(R.id.av_user);
            avatar.setAvatarUrl("https://randomuser.me/api/portraits/women/44.jpg");
    ```
  </Tab>
</Tabs>

The CometChatAvatar Component works well with CometChat `User` and `Group` object. The `setAvatar()` method accepts `User` or `Group` object if Avatar of `User` or `Group` is not available it automatically show the initials of the user or group name as a placeholder Avatar.

<Frame>
  <img src="data:image/png;base64,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" />
</Frame>

<Frame>
  <img src="data:image/png;base64,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" />
</Frame>

## Common Features

CometChatAvatar class provides functionality for an Avatar feature. There are commonly used properties to control the look of the Avatar.

| CometChatAvatar field element | Relevant attributes/methods                                                                                                                               |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Avatar Shape                  | `app:avatar_shape`                                                                                                                                        |
| Avatar                        | app:avatar **Method** - setAvatar(@NonNull User) - setAvatar(@NonNull Group) - setAvatar(@NonNull String) - setAvatar(@NonNull Drawable, @NonNull String) |
| Avatar Initial                | app:avatar\_initials **Method** - setInitials(@NonNull String)                                                                                            |
| Border Color                  | `app:border_color`                                                                                                                                        |
| Border Width                  | `app:border_width`                                                                                                                                        |

### CometChatUserPresence

This view will be used to show the user status if the user is online or offline. This view will take user status and display the color accordingly.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/7emVxEQ5MCxvzC60/images/195327c4-1623200074-0e66a4dda4a98b937cb7451aac11c4d3.gif?s=efb81685faebc35f0d127c3453174f57" width="600" height="1067" data-path="images/195327c4-1623200074-0e66a4dda4a98b937cb7451aac11c4d3.gif" />
</Frame>

#### Usage

In your `layout.xml` add the following code

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatUserPresence.CometChatUserPresence
        android:id="@+id/statusIndicator"
        android:layout_width="15dp"
        android:layout_height="15dp"
        app:user_status="@string/offline"
    />
    ```
  </Tab>
</Tabs>

User status can be set dynamically using the following code.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatUserPresence userPresence = findViewById(R.id.statusIndicator);
            userPresence.setUserStatus(user.getStatus());
    ```
  </Tab>
</Tabs>

#### Common Features

CometChatUserPresence provides `app:user_status` attribute and method `setUserStatus` to set Status of the user.

The `app:user_status` attribute can also be used with DataBinding in the following manner

e.g `app:user_status="@{user.status}"` you can also use different objects according to their use case. The attribute will continue to work as long as receives a string parameter

| CometChatUserPresence field element | Relevant attributes/methods                                               |
| ----------------------------------- | ------------------------------------------------------------------------- |
| User Status                         | `app:user_status <br /><br />**Method** - setUserStatus(@NonNull String)` |

***

### CometChatBadgeCount

The CometChatBadgeCount component can be used to show an unread count. You can use it in different scenarios according to their use case.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/mq8rEbFfi0JjKmkM/images/69a5b455-1623200080-5a7da331416a5a5512ba74e54e38f31c.gif?s=4b36776517784dc66d66747a0974e844" width="600" height="1067" data-path="images/69a5b455-1623200080-5a7da331416a5a5512ba74e54e38f31c.gif" />
</Frame>

#### Usage

Add the following code to your `layout.xml`

<Tabs>
  <Tab title="XML">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatBadgeCount.CometChatBadgeCount
            android:id="@+id/messageCount"
            android:layout_width="wrap_content"
            app:count="2"
            android:layout_height="wrap_content"/>
    ```
  </Tab>
</Tabs>

The count can be set dynamically using the `setCount` method. The `setCount` method takes an int as a parameter.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatBadgeCount badgeCount = findViewById(R.id.badgecount);
            badgeCount.messageCount.setCount(conversation.getUnreadMessageCount());
    ```
  </Tab>
</Tabs>

#### Common Feature

The CometChatBadgeCount component provides different attributes and methods to control the behavior and appearance of the BadgeCount view.

The attribute `app: count` can also be used with DataBinding

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    /// example with conversation object

    <com.cometchat.pro.uikit.ui_components.shared.cometchatBadgeCount.CometChatBadgeCount
        android:id="@+id/messageCount"
        android:layout_width="wrap_content"
        app:count="@{conversation.unreadMessageCount}"
        android:layout_height="wrap_content"/>
    ```
  </Tab>
</Tabs>

| CometChatBadgeCount field element | Relevant attributes/methods                                                   |
| --------------------------------- | ----------------------------------------------------------------------------- |
| Count                             | app:count **Method** - setCount(int)                                          |
| Count Size                        | app:count\_size **Method** - setCountSize(float)                              |
| Count Background Color            | app:count\_background\_color **Method** - setCountBackground(@ColorRes color) |
| Count Color                       | app:count\_color **Method** - setCountSize(float)                             |

***

### CometChatUsers

The `CometChatUsers` is custom **RecyclerView** which helps to display a list of users present in your CometChat app.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/XgQ9DxAoWn0btB5m/images/5b655aa5-1623200085-203c3bd4399cfd1d8be34b95c061cd14.jpg?fit=max&auto=format&n=XgQ9DxAoWn0btB5m&q=85&s=1cccdeb1b3bd68790491be83ab836e3a" width="1440" height="3120" data-path="images/5b655aa5-1623200085-203c3bd4399cfd1d8be34b95c061cd14.jpg" />
</Frame>

<Note>
  Note about CometChatUsers using with DataBinding:

  Your project should have DataBinding enabled. You can use `CometChatUsers` using DataBinding in the following manner
</Note>

In your `layout.xml` add the following code :

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <data>
        <import type="androidx.recyclerview.widget.LinearLayoutManager"/>
        <import type="androidx.databinding.ObservableList"/>
        <import type="com.cometchat.pro.models.User"/>

        <variable
            name="userList"
            type="ObservableList<User>" />

    </data>

    <com.cometchat.pro.uikit.ui_components.shared.cometchatUsers.CometChatUsers
    android:id="@+id/cometchatUsers"
    android:layout_width="match_parent"
    app:userlist="@{userList}"
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment add the following code

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    ObservableArrayList<User> userList=new ObservableArrayList<>();
            binding.setUserList(userList);
    ```
  </Tab>
</Tabs>

For getting the list of users you can use `UsersRequestBuilder()`. Visit the below link for more details on how to retrieve a list of users.

`Documentation`\
[**Retrive groups** Learn how to fetch various types of groups.](/sdk/android/3.0/groups-retrieve-groups)\
[**Retrive Users -** Learn how to fetch various types of users.](/sdk/android/3.0/users-retrieve-users)

In `onSuccess` of the `fetchNext` method you can set the data the `ObservableArrayList` you have created. The advantage of using the `ObservableArrayList` is one doesn't have to manually set the data on `binding.setUserList(userList);` every time you get a new set of data.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    usersRequest.fetchNext(new CometChat.CallbackListener<List<User>>() {
    @Override
    public void onSuccess(List <User> list) {
            Log.d(TAG, "User list received: " + list.size());
            userList.addAll(list);
            //update the ObservableArrayList here 
            }
    @Override
    public void onError(CometChatException e) {
            Log.d(TAG, "User list fetching failed with exception: " + e.getMessage());
            }
            });
    ```
  </Tab>
</Tabs>

<Note>
  Note About CometChatUsers Without DataBinding

  If you are not using DataBinding in your project you can use the `CometChatUsers` in the following manner.
</Note>

In your `layout.xml` add the following code

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatUsers.CometChatUsers
        android:id="@+id/cometchatUsers"
        android:layout_width="match_parent"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatUsers cometChatUsers=findViewById(R.id.cometchatUsers);
            cometChatUsers.setUserList(list);
    // list: fetched using the UsersRequestBuilder
    // list: fetched using the UsersRequestBuilder
    ```
  </Tab>
</Tabs>

To get the list of users you can use UsersRequestBuilder(). Visit the link below for more details on [Retrieve Users](/sdk/android/3.0/messaging-retrieve-conversations#retrieve-list-of-conversations)

<Note>
  Note About Using setItemClickListener

  For getting the click event of CometChatUsers you can make use of setItemClickListener class.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    cometChatUsers.setItemClickListener(new OnItemClickListener<User>() {

    @Override
    public void OnItemClick(User var, int position) {

            }

    @Override
    public void OnItemLongClick(User var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

#### Common Usage

The `CometChatUsers` component provides different properties to control the behavior of `CometChatUsers` view.

| CometChatUsers field elements | Relevant attributes/methods |
| ----------------------------- | --------------------------- |
| Update List                   | `- setUserList(List<User>)` |
| Update                        | `- update (User)`           |
| Remove                        | `- remove(String)`          |
| Add                           | `- add(User)`               |

***

### CometChatGroups

The `CometChatGroups` is a custom **RecyclerView** that helps you to display a list of groups.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/ugckbRl5Q-H7t8X2/images/e4b404e9-1623200087-8c598dd4200bdd050bb1b3b2effb2271.jpg?fit=max&auto=format&n=ugckbRl5Q-H7t8X2&q=85&s=6da458f7ee1f4b3cd3dd353dacd51a98" width="1440" height="3120" data-path="images/e4b404e9-1623200087-8c598dd4200bdd050bb1b3b2effb2271.jpg" />
</Frame>

<Note>
  Note About CometChatGroups Using With DataBinding

  If you are using DataBinding in your project you can use the CometChatGroups in the following manner.
</Note>

In your `layout.xml` add the following code snippet

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <data>

        <import type="androidx.recyclerview.widget.LinearLayoutManager"/>
        <import type="androidx.databinding.ObservableList"/>
        <import type="com.cometchat.pro.models.Group"/>

        <variable
            name="groupList"
            type="ObservableList<Group>" />

    </data>

    <com.cometchat.pro.uikit.ui_components.shared.cometchatGroups.CometChatGroups
    android:id="@+id/cometchatGroupList"
    android:layout_width="match_parent"
    app:grouplist="@{groupList}"
    app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
    android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment .

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    ObservableArrayList<Group> groupList=new ObservableArrayList<>();
            binding.setGroupList(groupList);
    ```
  </Tab>
</Tabs>

For getting the list of groups you can use `GroupsRequestBuilder()`.Visit the below link for more details on how to retrieve a list of group.

**Documentation** [**Retrive Groups -** *Learn how to fetch various types of groups.*](/sdk/android/retrieve-groups)

In `onSuccess` of the `fetchNext` method you can set the data the `ObservableArrayList` you have created. The advantage of using the `ObservableArrayList` is one doesn't have to manually set the data on `binding.setGroupList(groupList);` every time you get a new set of data.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    groupsRequest.fetchNext(new CometChat.CallbackListener<List<Group>>() {
    @Override
    public void onSuccess(List <Group> list) {
            Log.d(TAG, "Groups list fetched successfully: " + list.size());
            groupList.addAll(list);
            // update the ObservableArrayList here

            }
    @Override
    public void onError(CometChatException e) {
            Log.d(TAG, "Groups list fetching failed with exception: " + e.getMessage());
            }
            });
    ```
  </Tab>
</Tabs>

<Note>
  Note About CometChatGroups Without DataBinding

  If you are not using DataBinding in your project you can use the `CometChatGroups` in the following manner.
</Note>

In your `layout.xml` add the following code

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatGroups.CometChatGroups
            android:id="@+id/cometchatGroups"
            android:layout_width="match_parent"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatGroups cometChatGroups = findViewById(R.id.cometchatGroups);
            cometChatGroups.setGroupList(list);
    // list: fetched using the GroupsRequestBuilder
    ```
  </Tab>
</Tabs>

You can refer to how to [Retrieve Groups](/sdk/android/retrieve-groups).

<Note>
  Note About Using setItemClickListener

  For getting the click event of `CometChatGroupList` you can make use of `setItemClickListener` class.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    cometChatGroups.setItemClickListener(new OnItemClickListener<Group>() {
    @Override
    public void OnItemClick(Group var, int position) {

            }

    @Override
    public void OnItemLongClick(Group var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

#### Common Usage

The `CometChatGroupList` component provides different properties to control the behavior of `CometChatGroupList` view. You can perform different operations like an update, remove, add, etc.

| CometChatGroups field elements | Relevant attributes/methods   |
| ------------------------------ | ----------------------------- |
| Update List                    | `- setGroupList(List<Group>)` |
| Update                         | `- update (Group)`            |
| Remove                         | `- remove(String)`            |
| Add                            | `- add(Group)`                |

***

### CometChatConversations

`CometChatConversations` is a custom **RecyclerView** which will help you to display a list of all the users and groups in which the logged-in user has made any conversation.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/XgQ9DxAoWn0btB5m/images/606557ca-1623200089-1e6edc0cd162671904900432ce5383e6.jpg?fit=max&auto=format&n=XgQ9DxAoWn0btB5m&q=85&s=99a79c464386d985e12e3b5b788eae55" width="1440" height="3120" data-path="images/606557ca-1623200089-1e6edc0cd162671904900432ce5383e6.jpg" />
</Frame>

<Note>
  Note about CometChatConversations using with DataBinding

  If you are using DataBinding in your project you can use the `CometChatConversations` in the following manner.
</Note>

In your `layout.xml` add the following code.

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <data>

            <import type="androidx.recyclerview.widget.LinearLayoutManager"/>
            <import type="androidx.databinding.ObservableList"/>
            <import type="com.cometchat.pro.models.Conversation"/>

    <variable
                    name="conversationList"
                            type="ObservableList<Conversation>" />

    </data>

    <com.cometchat.pro.uikit.ui_components.shared.cometchatConversations.CometChatConversations
            android:id="@+id/cometchatConversationList"
            android:layout_width="match_parent"
            app:conversationlist="@{conversationList}"
            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
            android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    ObservableArrayList<Conversation> conversationList=new ObservableArrayList<>();
            binding.setConversationList(conversationList);
    ```
  </Tab>
</Tabs>

For getting the list of conversation you can use `ConversationsRequestBuilder()` .Visit the below link for more details on how to retrieve a list of conversation

**Documentation** [\*\*Retrive Conversations -\*\**Learn how to build a recent chats list using conversations.*](/sdk/android/retrieve-conversations)

In `onSuccess` of the `fetchNext` method you can set the data the `ObservableArrayList` you have created. The advantage of using the `ObservableArrayList` is one doesn't have to manually set the data on `binding.setConversationList(conversationList);` every time you get a new set of data.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    conversationsRequest.fetchNext(new CometChat.CallbackListener<List<Conversation>>() {
    @Override
    public void onSuccess(List<Conversation> conversations) {
            // Handle list of conversations
            conversationList.addAll(conversations);
            // update ObservableArrayList list here
            }

    @Override
    public void onError(CometChatException e) {
            // Handle failure
            }
            });
    ```
  </Tab>
</Tabs>

<Note>
  Note About CometChatConversations Without DataBinding

  If you are not using DataBinding in your project you can use the `CometChatConversations` in the following manner.
</Note>

In your `layout.xml` add the following code

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatConversations.CometChatConversations
        android:id="@+id/cometchatConversations"
        android:layout_width="match_parent"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    CometChatConversations cometChatConversations = findViewById(R.id.cometchatConversations);
            cometChatConversationList.setConversationList(conversations);
    // list: fetched using the ConversationsRequestBuilder
    ```
  </Tab>
</Tabs>

In `onSuccess` of the `fetchNext` method of `ConversationsRequestBuilder`, you can set the data. You can refer how to [Retrieve Conversations](/sdk/android/retrieve-conversations).

<Note>
  Note About Using setItemClickListener

  For getting the click event of `CometChatConversations` you can make use of the `ConversationItemClickListener` class.
</Note>

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    cometChatConversations.setItemClickListener(new OnItemClickListener<Conversation>() {
    @Override
    public void OnItemClick(Conversation var, int position) {

            }

    @Override
    public void OnItemLongClick(Conversation var, int position) {
            super.OnItemLongClick(var, position);
            }
            });
    ```
  </Tab>
</Tabs>

#### Common Usage

The `CometChatConversations` component provides different properties to control the behavior of the `CometChatConversations` view. You can perform different operations like an update, remove, add, etc

| CometChatConversations field elements | Relevant attributes/methods                |
| ------------------------------------- | ------------------------------------------ |
| Update List                           | `-setConversationList(List<Conversation>)` |
| Update                                | `- update (Conversation)`                  |
| Remove                                | `- remove(Conversation)`                   |
| Add                                   | `# add(Conversation)`                      |

***

### CometChatCalls

`CometChatCalls` is custom **RecyclerView** which will help you to display list of calls.

<Frame>
  <img src="https://mintcdn.com/cometchat-22654f5b-docs-rn-guide-message-privately/jpEUuHUk-hvu4tQT/images/a8b53dc3-1623200091-8e95c2b094678f21eff081b269904ddf.jpg?fit=max&auto=format&n=jpEUuHUk-hvu4tQT&q=85&s=6ed20226eaadd126e4836a3b71bc74bb" width="1080" height="2340" data-path="images/a8b53dc3-1623200091-8e95c2b094678f21eff081b269904ddf.jpg" />
</Frame>

You can use the `CometChatCalls` in the following manner.

In your `layout.xml` add the following code :

<Tabs>
  <Tab title="xml">
    ```xml theme={null}
    <com.cometchat.pro.uikit.ui_components.shared.cometchatCalls.CometChatCalls
        android:id="@+id/cometchatCalls"
        android:layout_width="match_parent"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:layout_height="match_parent" />
    ```
  </Tab>
</Tabs>

In your corresponding activity or fragment

```python theme={null}
CometChatCalls cometChatCalls = findViewById(R.id.cometchatCallList);
```

In `onSuccess` of the `fetchNext` method of `MessagesRequestBuilder` you can set the data. You need to add `setCategory(CometChatConstants.CATEGORY_CALL)` in your `MessagesRequestBuilder` to fetch only call messages

You can refer an **example here.**

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    if (messagesRequest == null)
            {
            messagesRequest = new MessagesRequest.MessagesRequestBuilder().setCategory(CometChatConstants.CATEGORY_CALL).setLimit(30).build();
            }
            messagesRequest.fetchPrevious(new CometChat.CallbackListener<List<BaseMessage>>() {
    @Override
    public void onSuccess(List<BaseMessage> baseMessages) {
        /*Since the call list received like messages i.e top with older and 
        bottom with the latest message. We will reverse the list */
            Collections.reverse(baseMessages);
            cometCallList.setCallList(baseMessages);
            }
    @Override
    public void onError(CometChatException e) {
            //Error Message 
            });
    ```
  </Tab>
</Tabs>

<Note>
  Note About Using CallItemClickListener:

  For getting the click event of CometChatCalls you can make use of ItemClickListener class.
</Note>

There are two events given by `CometChatCalls`.

This event is performed when click on User or Group item displayed in calls.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    cometChatCalls.setItemClickListener(new OnItemClickListener<Call>() {
    @Override
    public void OnItemClick(Call var, int position) {
            // perform your action here
            }
            });
    ```
  </Tab>
</Tabs>

This event is performed when click on call icon visible after each Group or User item in call list.

<Tabs>
  <Tab title="Java">
    ```java theme={null}
    cometChatCalls.setItemCallClickListener(new OnItemClickListener<Call>() {
    @Override
    public void OnItemClick(Call var, int position) {
            // perform your action here
            }
            });
    ```
  </Tab>
</Tabs>

## Common Usage:

The `CometChatCallList` component provides different properties to control the behavior of the `CometChatCallList` view. You can perform different operations like an update, remove.

| CometChatCalls field e | Relevant attributes/methods |
| ---------------------- | --------------------------- |
| Update List            | setCallList(List\<Call>)    |
| Update                 | update(Call)                |
| Remove                 | remove(Call)                |
