如何在Recyclerview中单击onclick的下一个标签?

  • 所以基本上我在ViewPagerTabLayout中有两个标签,以便在标签视图中存储两个片段。

  • 问题是,我在recycler view中使用名片视图,该名片视图就像一个“赞”按钮。基本上,当用户单击该按钮时,它应该出现在下一个选项卡上-但不是。只有当用户走出整个页面并返回到该页面并选择该选项卡时,才会显示所选的名片视图。 我检查了数据库,它正在执行应有的操作,但是recycler view不会更新。

这是我喜欢在卡片视图中显示内容的代码

    public class HomeFragment extends Fragment {

    private static final String TAG = "MSG: ";
    private Toolbar toolbar;
    public TabLayout tabLayout;
    private ViewPager viewPager;
    private Context context;
    public View root;


    public int[] tabsunselected = {
            R.drawable.unselected_notification,R.drawable.unselected_chat,R.drawable.unselected_issue,R.drawable.unselected_verified
    };

    public int[] tabSelected = {
            R.drawable.selected_notification,R.drawable.selected_chat,R.drawable.selected_issue,R.drawable.selected_verified
    };



    public View onCreateView(@NonNull LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

        root = inflater.inflate(R.layout.fragment_home,container,false);
        context = container.getcontext();
        setupTabs(root);
        tabLayout.getTabAt(0).setIcon(tabSelected[0]);

        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                int position = tab.getPosition();

                switch (position) {
                    case 0:
                        tabLayout.getTabAt(0).setIcon(tabSelected[0]);
                        break;
                    case 1:
                        tabLayout.getTabAt(1).setIcon(tabSelected[1]);
                        break;
                    case 2:
                        tabLayout.getTabAt(2).setIcon(tabSelected[2]);
                        break;
                    case 3:
                        tabLayout.getTabAt(3).setIcon(tabSelected[3]);
                        break;
                }
            }

            @Override
            public void onTabunselected(TabLayout.Tab tab) {
                int position = tab.getPosition();
                switch (position) {
                    case 0:
                        tabLayout.getTabAt(0).setIcon(tabsunselected[0]);
                        break;
                    case 1:
                        tabLayout.getTabAt(1).setIcon(tabsunselected[1]);
                        break;
                    case 2:
                        tabLayout.getTabAt(2).setIcon(tabsunselected[2]);
                        break;
                    case 3:
                        tabLayout.getTabAt(3).setIcon(tabsunselected[3]);
                        break;
                }
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

        return root;
    }

    private void setupTabIcons() {
        tabLayout.getTabAt(0).setIcon(tabsunselected[0]);
        tabLayout.getTabAt(1).setIcon(tabsunselected[1]);
        tabLayout.getTabAt(2).setIcon(tabsunselected[2]);
        tabLayout.getTabAt(3).setIcon(tabsunselected[3]);
    }

    public void setupTabs(View view) {
        toolbar = view.findViewById(R.id.toolbar);
        viewPager = view.findViewById(R.id.viewpager);
        tabLayout = view.findViewById(R.id.tabs);
        ((AppCompatactivity)getactivity()).setSupportactionBar(toolbar);
        ((AppCompatactivity)getactivity()).getSupportactionBar().setDisplayHomeAsUpEnabled(true);
        tabLayout.setupWithViewPager(viewPager);
        setupViewPager(viewPager);
        setupTabIcons();

    }

    public void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getactivity().getSupportFragmentManager());
        adapter.addFragment(new Notification(),"Notification");
        adapter.addFragment(new Conversation(),"Conversation");
        adapter.addFragment(new Issues(),"Issues");
        adapter.addFragment(new Pinned(),"Pinned");
        viewPager.setadapter(adapter);
    }

    private void experiment() {

    }

  
      
  • 因此,当第一次打开该标签时,效果很好,并且填充了回收站视图,但是当单击某个视图时,我想转到另一个标签,   像下一个标签一样。
  •   

我的寻呼机适配器:

    public class NotificationFeedAdapter extends RecyclerView.Adapter<NotificationFeedAdapter.ViewHolder> {

    public List<NotificationFeed> notificationFeedList;
    public Context context;


    public NotificationFeedAdapter(List<NotificationFeed> notificationFeedList) {
        this.notificationFeedList = notificationFeedList;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {

        View view = LayoutInflater.from(parent.getcontext()).inflate(R.layout.notification_single_item,parent,false);
        context = parent.getcontext();

        return new ViewHolder(view);

    }



    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder,int position) {

        final String list = notificationFeedList.get(position).NotificationFeedID;
        String body = notificationFeedList.get(position).getBody();
        String userHandle = notificationFeedList.get(position).getUserHandle();
        holder.descView.setText(body);
        holder.username.setText(userHandle);
        holder.id = list;
    }
    @Override
    public int getItemCount() {
        return notificationFeedList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClicklistener {

        private View mView;
        private TextView descView;
        private TextView username;
        private String id;
        private String TAG = "MSG: ";
        private TextView mMore;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            mView = itemView;
            itemView.setOnClicklistener(this);
            descView = mView.findViewById(R.id.body);
            username = mView.findViewById(R.id.user);
            mMore = mView.findViewById(R.id.more);
        }

        @Override
        public void onClick(View v) {
           // Navigate to tab
        }
    }
    }

我将在onclick事件中添加什么,以使其进入下一个标签。

whychn 回答:如何在Recyclerview中单击onclick的下一个标签?

使用所需的选项卡创建包含参数的listener进行导航,将其传递到适配器,从Adapter传递到ViewHolder,并在HomeFragment中听{{ 1}},然后使用

导航至所需的任何标签
ViewPager
本文链接:https://www.f2er.com/2943632.html

大家都在问