从适配器单击第一个选项卡recyclerview项时,如何为第二个选项卡设置动画?

时间:2018-07-07 06:01:05

标签: java android android-recyclerview android-viewpager android-tablayout

过去2天,我一直在寻找解决方案,但没有解决方案。因此,当单击recyclerview项时,我不得不使用Intent重新启动活动。下面是代码:

holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Context context = view.getContext();

            Intent intent = new Intent(context, MyActivity.class);
            SharedData.setSelectedCategory(category.getName());
            intent.putExtra("category", category.getName());
            context.startActivity(intent);
            ((MyActivity) context).finish();
        }
    });

,然后在活动中的以下代码中使用,以选择第二个选项卡。

viewPager.setCurrentItem(1, false);
tabLayout.setupWithViewPager(viewPager);

虽然这可行,但是当单击第一个选项卡recyclerview项时,我仍然想使用幻灯片动画加载第二个选项卡。谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用从onClick到活动的广播,然后在活动中可以执行类似的操作viewPager.setCurrentItem(1, true);

活动中

 public static final String BROADCAST_ACTION = "BROADCAST_ACTION";

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction() != null &&
                intent.getAction().equals(BROADCAST_ACTION)) {
            viewPager.setCurrentItem(1, true);
        }
    }
};

@Override
protected void onResume() {
    super.onResume();
    LocalBroadcastManager.getInstance(
            MainActivity.this).registerReceiver(broadcastReceiver, new IntentFilter(BROADCAST_ACTION));
}

@Override
protected void onStop() {
    super.onStop();
    LocalBroadcastManager.getInstance(MainActivity.this).unregisterReceiver(broadcastReceiver);
}

在适配器onClick中

Intent intent = new Intent(MainActivity.BROADCAST_ACTION);
    LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

在活动中尝试以下代码

viewPager.setAnimation(your_custom_animation);