I am having this problem even though I used async in Realm. The lag is very noticeable. Is there something wrong with how I code it? This is my code:
    RealmConfiguration configuration = new RealmConfiguration.Builder()
            .deleteRealmIfMigrationNeeded()
            .build();
    realm = Realm.getInstance(configuration);
    itemCategoryName = getIntent().getExtras().getString("category", "");
    itemCategoryName = itemCategoryName.toLowerCase();
    shopItemList = new ArrayList<>();
    shopItemAdapter = new ShopItemAdapter(this, shopItemList);
    recyclerView.setLayoutManager(new GridLayoutManager(this, 2));
    recyclerView.setAdapter(shopItemAdapter);
    realm.where(ShopItem.class).contains("category", itemCategoryName, Case.INSENSITIVE).findAllAsync()
    .addChangeListener(new RealmChangeListener<RealmResults<ShopItem>>() {
        @Override
        public void onChange(RealmResults<ShopItem> shopItems) {
            shopItemList.addAll(shopItems);
            shopItemAdapter.notifyDataSetChanged();
        }
    });