java.lang.ClassCastException: com.sendbird.android.User cannot be cast to com.sendbird.android.Member

Hi there i am facing this error in Custom UiKit dependency, this error is not frequently generating but it will generate for sure and crashing my app, how to tackle this error.

Code

new BannedListFragment.Builder(data.getUrl(), R.style.SendBird_Custom)
                        .setCustomBannedMemberFragment(new CustomBannedListFragment())
                        .setUseHeader(false)
                        .setHeaderTitle(mContext.getResources().getString(R.string.sb_text_menu_banned_members))
//                        .setUseHeaderLeftButton(false)
//                        .setUseHeaderRightButton(false)
                        .setEmptyText(R.string.sb_text_empty_no_banned_member)
//                        .setEmptyIcon(R.drawable.icon_ban, AppCompatResources.getColorStateList(mContext, R.color.primary_300))
                        .setEmptyIcon(R.drawable.icon_ban, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderBackColor()))
//                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
                        .setHeaderLeftButtonListener(null)
//                        .setHeaderRightButtonIcon(R.drawable.icon_plus, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
                        .setHeaderLeftButtonIcon(R.drawable.icon_plus, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
//                        .setHeaderRightButtonListener(null)
//                        .setActionItemClickListener(null)
//                        .setItemClickListener(null)
//                        .setItemLongClickListener(null)
//                        .setUserListAdapter(null)
                        .build()

Error

java.lang.ClassCastException: com.sendbird.android.User cannot be cast to com.sendbird.android.Member
at com.sendbird.uikit.activities.adapter.MemberListAdapter.getItem(MemberListAdapter.java:75)
at com.sendbird.uikit.activities.adapter.MemberListAdapter.onBindViewHolder(MemberListAdapter.java:54)
at com.sendbird.uikit.activities.adapter.MemberListAdapter.onBindViewHolder(MemberListAdapter.java:26)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1231)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:1225)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4260)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3695)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9965)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
at android.view.Choreographer.doCallbacks(Choreographer.java:809)
at android.view.Choreographer.doFrame(Choreographer.java:744)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1139)```

Hi @manishahire, BannedListFragment uses User type data, not Member type, and MemberListAdapter in UIKit uses Member type data. So I don’t think there will be a problem using UserTypeListAdapter, not MemberListAdapter.

Hi @LeoShin i am getting this error when i go from members to operators list. i think this happening because of cache.

In UIkit, there is no screen moving from the member list screen to the operator list. It seems that you have customized it and are using it, but can you show me a code snippet calling the screen in question?

1:- calling member list --> members data will show which is perfect
        MainFragmentsContainerActivity.mActivity.pushFragments(
                new MemberListFragment.Builder(data.getUrl(), R.style.CustomUserListStyle)
                        .setCustomMemberListFragment(new CustomMemberListFragment())
                        .setUseHeader(false)
                        .setHeaderTitle(mContext.getResources().getString(R.string.sb_text_header_member_list))
                        .setUseHeaderLeftButton(false)
                        .setUseHeaderRightButton(false)
                        //                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
                        //                        .setHeaderRightButtonIcon(R.drawable.icon_add, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))   //icon_add_member missing
                        .setHeaderRightButtonIcon(R.drawable.icon_add, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderBackColor()))
                        .setHeaderLeftButtonListener(null)
                        //                        .setHeaderRightButtonListener(v -> showCustomInviteChannelActivity(channelUrl))
                        .setItemClickListener(null)
                        //                        .setMemberListAdapter(new CustomMemberListAdapter())
                        .setMemberListAdapter(null)
                        .setItemLongClickListener(null)
                        .build()  , true, true, false);
						
						
2:- after backpress i went to the group info page on which i click on Moderation

        MainFragmentsContainerActivity.mActivity.pushFragments(new ModerationFragment.Builder(data.getUrl(), R.style.SendBird_Custom)
                .setCustomModerationFragment(new CustomModerationFragment())
                .setUseHeader(false)
                .setUseHeaderLeftButton(false)
                .setHeaderTitle(mContext.getResources().getString(R.string.sb_text_channel_settings_moderations))
//                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
                .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
                .setHeaderLeftButtonListener(null)
                .setOnMenuItemClickListener(null)
                .build() , true, true, false);

3: On Moderation i click on Operators  :- app will crash here
			
			 MainFragmentsContainerActivity.mActivity.pushFragments(new OperatorListFragment.Builder(data.getUrl(), R.style.SendBird_Custom)
                .setCustomOperatorListFragment(new CustomOperatorListFragment())
                .setUseHeader(false)
                .setUseHeaderLeftButton(false)
                .setUseHeaderRightButton(false)
                .setHeaderTitle(mContext.getResources().getString(R.string.sb_text_menu_operators))
//                        .setEmptyIcon(R.drawable.icon_chat, AppCompatResources.getColorStateList(mContext, R.color.primary_300))
                .setEmptyIcon(R.drawable.icon_chat, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderBackColor()))
                .setEmptyText(R.string.sb_text_user_list_empty)
//                        .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
                .setHeaderLeftButtonIcon(R.drawable.icon_arrow_left, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
                .setHeaderLeftButtonListener(null)
                .setHeaderLeftButtonIcon(R.drawable.icon_plus, ColorStateList.valueOf(Theme.getInstance(mContext, ((ApplicationClass) mContext.getApplicationContext()).getCurrentEventKey()).getHeaderForeColor()))
//                        .setHeaderRightButtonIcon(R.drawable.icon_plus, AppCompatResources.getColorStateList(mContext, R.color.ondark_01))
//                        .setHeaderRightButtonListener(v -> {
//                            Intent intent = PromoteOperatorsActivity.newIntentFromCustomActivity(this, CustomPromoteOperatorsActivity.class, channelUrl);
//                            startActivity(intent);
//                        })
                .setItemClickListener(null)
                .setItemLongClickListener(null)
                .setActionItemClickListener(null)
                .setUserListAdapter(null)
                .build(), true, true, false);


Error:-

java.lang.ClassCastException: com.sendbird.android.User cannot be cast to com.sendbird.android.Member
at com.sendbird.uikit.activities.adapter.MemberListAdapter.getItem(MemberListAdapter.java:75)
at com.sendbird.uikit.activities.adapter.MemberListAdapter.onBindViewHolder(MemberListAdapter.java:54)
at com.sendbird.uikit.activities.adapter.MemberListAdapter.onBindViewHolder(MemberListAdapter.java:26)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851)
at androidx.recyclerview.widget.RecyclerView.onLayout(RecyclerView.java:4404)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at androidx.constraintlayout.widget.ConstraintLayout.onLayout(ConstraintLayout.java:1873)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at androidx.drawerlayout.widget.DrawerLayout.onLayout(DrawerLayout.java:1231)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:1225)
at android.view.View.layout(View.java:24475)
at android.view.ViewGroup.layout(ViewGroup.java:7383)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:4260)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3695)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2618)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9965)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1010)
at android.view.Choreographer.doCallbacks(Choreographer.java:809)
at android.view.Choreographer.doFrame(Choreographer.java:744)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:995)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:246)
at android.app.ActivityThread.main(ActivityThread.java:8506)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1139)

hi @LeoShin is there any way to call operators list query in CustomOperatorListFragment and set to UiKit OperatorListFragment UserTypeListAdapter.

You called the OperaterListFragment, but I don’t understand why the MemberListAdapter was used. If you look at your code, the setUserListAdapter is set to NULL when using CustomOperatorListFragment. Aren’t you using RecyclerView’s adapter as the MemberListAdapter separately inside the CustomOperatorListFragment by any chance?

is there any way to call operators list query in CustomOperatorListFragment and set to UiKit OperatorListFragment UserTypeListAdapter.

If CustomOperatorListFragment inherits OperatorListFragment and the onConfigure function of OperatorListFragment is called normally, OperatorListQuery and UserTypeListAdapter will be used automatically in your CustomOperatorListFragment.