当前位置: 首页 > 知识库问答 >
问题:

单击选项卡项来自下一个选项卡项的响应

孙承
2023-03-14

我有一个片段与片段寻呼机适配器实现表布局每个选项卡有一个回收器视图与一些项目(相同的回收器视图适配器为所有recylerview)通过实现OnItemClick侦听器点击每个项目调用一个活动,实现了一个视图寻呼机与片段StatePagerAdapter,以显示回收器视图项目基于滑动的表布局视图寻呼机显示上一个或下一个选项卡项目每个项目的数据存储在一个数组列表中。

 viewPager = (ViewPager) view.findViewById(R.id.viewpager);
    //setupViewPager(viewPager);
    MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getChildFragmentManager(),getActivity());

    adapter.addFrag(new OneFragment(), "title1");
    adapter.addFrag(new TwoFragment(), "title2");
    adapter.addFrag(new ThreeFragment(), "title3");
    viewPager.setAdapter(adapter);
    tabLayout = (TabLayout) view.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

一个片段和两个片段和…是相似的:

rv=(RecyclerView) view.findViewById(R.id.rv);

        StaggeredGridLayoutManager sglm = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
        rv.setLayoutManager(sglm);
        rv.setHasFixedSize(true);
persons = new ArrayList<>();



          persons.add(new Person("name", "age","email","phone","resume", R.drawable.photo));
     persons.add(new Person("name", "age","email","phone","resume", R.drawable.photo));
    .
    .
    .      

 for (int j=0; j < persons.size() ;j++){
            PersonItem personItem = new PersonItem();
            personItem.setName(persons.get(j).name);
            personItem.setAge(persons.get(j).age);
            personItem.setEmail(persons.get(j).email);
            personItem.setPhone(persons.get(j).phone);
            personItem.setResume(persons.get(j).resume);
            personItem.setImageId(persons.get(j).photoId);
            personList1.addItem(personItem);

 RVAdapter adapter = new RVAdapter(getContext(),persons);


        adapter.setOnItemClickListener(new RVAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                int pos = position;



                Bundle bundle = new Bundle();
                bundle.putSerializable("person", personList1);
                Intent intent = new Intent(getContext(),
                        MyActivity.class);
                intent.putExtras(bundle);
                intent.putExtra("pos", pos);

                startActivity(intent);

            }

        });
        rv.setAdapter(adapter);

回收器视图适配器:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {
    private Context mContext;
    private static OnItemClickListener listener;

   //AdapterView.OnItemClickListener listener;
    // Define the listener interface
    public interface OnItemClickListener {
        void onItemClick(View itemView, int position);
    }
    // Define the method that allows the parent activity or fragment to define the listener
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener = listener;
    }


    public static class PersonViewHolder extends RecyclerView.ViewHolder {

        CardView cv;
        TextView personName;
        TextView personAge;
        ImageView personPhoto;

        PersonViewHolder(final View itemView) {
            super(itemView);
            cv = (CardView)itemView.findViewById(R.id.cv);
            personName = (TextView)itemView.findViewById(R.id.person_name);
            personAge = (TextView)itemView.findViewById(R.id.person_age);
            personPhoto = (ImageView)itemView.findViewById(R.id.person_photo);

            // Setup the click listener
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Triggers click upwards to the adapter on click
                    if (listener != null)
                        listener.onItemClick(itemView, getLayoutPosition());
                }
            });
        }
    }

    List<Person> persons;

    public RVAdapter(Context context , List<Person> persons){
        this.persons = persons;
        mContext = context;
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

    @Override
    public PersonViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
        PersonViewHolder pvh = new PersonViewHolder(v);
        return pvh;
    }

    @Override
    public void onBindViewHolder(PersonViewHolder personViewHolder, int i) {
        personViewHolder.personName.setText(persons.get(i).name);
        personViewHolder.personAge.setText(persons.get(i).age);
        personViewHolder.personPhoto.setImageResource(persons.get(i).photoId);
    }

    @Override
    public int getItemCount() {
        return persons.size();
    }
}

共有1个答案

张通
2023-03-14

为了解决这个问题,我将RvAdapter类作为每个选项卡片段中的内部和私有类:

 private static class RVAdapter extends RecyclerView.Adapter<RVAdapter.PersonViewHolder> {

 //...and keep remaning 
 类似资料:
  • 在jQuery中创建选项卡。单击其他选项卡时,所有选项卡都将消失。我想不出解决办法 以下是无法正常工作的页面:http://www.sleepfullnights.com/products/sfn-537 这是另一个用它工作的人的JSFIDLE:http://jsfiddle.net/gravitybox/7pHg4/我已经复制并粘贴了其中的每个元素到页面中,问题仍然存在。 一个人指出,当点击标签

  • 我试图在我的活动中添加一个带有片段的选项卡,但它没有响应或事件显示。 这是我下面的代码。 这是我的主要活动: 这是我的PagerAdapter:

  • 两个tab <div class="ui-tab "> <ul class="ui-tab-nav ui-border-b "> <li class="current"><span>热门</span></li> <li><span>热门</span></li> </ul> <ul class="ui-tab-content" sty

  • 打开选项卡 打开新选项卡于 设置新的弹出窗口如何打开: 选项 描述 最后打开选项卡的窗口 在最后打开的窗口打开一个新的选项卡。 新窗口 打开一个新的窗口。 允许重复打开相同的对象 如果你想允许一个对象可打开多个实例,可勾选这个选项。 选项卡列样式 永远显示选项卡栏 打开窗口时显示标签栏。

  • 打开新选项卡于 设置新的弹出窗口如何打开: 选项 描述 主窗口 在主窗口中打开一个新的选项卡。 最后打开选项卡的窗口 在最后打开的窗口打开一个新的选项卡。如果没有任何已打开的窗口,会打开一个新的窗口。 新窗口 打开一个新的窗口。 启动画面 控制在启动 Navicat 时出现哪些选项卡: 选项 描述 仅打开对象选项卡 仅打开对象选项卡,没有其他选项卡。 从上次离开的画面继续 打开对象选项卡,并重新打

  • 启动画面 控制在启动 Navicat 时出现哪些选项卡: 选项 描述 仅打开对象选项卡 仅打开对象选项卡,没有其他选项卡。 从上次离开的画面继续 打开对象选项卡,并重新打开你上次离开 Navicat 时已打开的相同选项卡。 打开特定选项卡或一组选项卡 打开对象选项卡,并打开你在“设置选项卡”选择的选项卡。 打开选项卡 打开新选项卡于 设置新的弹出窗口如何打开: 选项 描述 主窗口 在主窗口中打开一