java - RecyclerView 列表和下一个 Activity 的 Intent Android

标签 java android android-studio android-recyclerview

我使用 RecyclerView 创建了一个列表,我希望如果用户触摸该列表中的某个项目,它会将用户重定向到另一个 Activity 。请注意,我选项卡中有list。如何实现这一目标?这是我到目前为止所尝试过的。

  1. 类列表适配器

公共(public)类ListAdapter扩展RecyclerView.Adapter实现View.OnClickListener {

List<ListName> mItems;
public ListAdapter(FragmentActivity c) {
    super();
    mItems = new ArrayList<ListName>();

    ListName nature = new ListName();
    nature.setName("Jose Mourinho");
    nature.setDes("Chelsea Football Club");
    mItems.add(nature);

    nature = new ListName();
    nature.setName("Louis van Gaal");
    nature.setDes("Manchester United");
    mItems.add(nature);

    nature = new ListName();
    nature.setName("Arsene Wenger");
    nature.setDes("Arsenal");
    mItems.add(nature);

    nature = new ListName();
    nature.setName("Manuel Pellegrini");
    nature.setDes("Manchester City");
    mItems.add(nature);

    nature = new ListName();
    nature.setName("Brendan Rodgers");
    nature.setDes("Liverpool CF");
    mItems.add(nature);
    }
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(viewGroup.getContext())
            .inflate(R.layout.recyler_view_list, viewGroup, false);
    ViewHolder viewHolder = new ViewHolder(v);
    return viewHolder;
    }
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, int i) {
    ListName nature = mItems.get(i);
    viewHolder.tvName.setText(nature.getName());
    viewHolder.tvDes.setText(nature.getDes());
    }
    @Override
    public int getItemCount() {

    return mItems.size();
    }

    @Override
    public void onClick(View v) {

    }

    class ViewHolder extends RecyclerView.ViewHolder{

    public TextView tvName;
    public TextView tvDes;
    public ViewHolder(View itemView) {
        super(itemView);
        tvName = (TextView)itemView.findViewById(R.id.txtTitle);
        tvDes = (TextView)itemView.findViewById(R.id.txtSubTitle);
    }
    }

    } 
  • 类列表名称。该类用于设置和获取名称和描述

      public class ListName {
        private String mName;
        private String mDes;
    
       public String getName() {
       return mName;
     }
       public void setName(String name) {
    this.mName = name;
      }
       public String getDes() {
        return mDes;
      }
       public void setDes(String des) {
        this.mDes = des;
      }
    
      } 
    
  • Tab1 类。这是 Tab1 的 fragment 类。

     public class Tab1 extends Fragment {
    
     RecyclerView mRecyclerView;
     RecyclerView.LayoutManager mLayoutManager;
     RecyclerView.Adapter mAdapter;
    
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        final View view = inflater.inflate(R.layout.tab_1, container,      false);
    final FragmentActivity c = getActivity();
    final RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
    LinearLayoutManager layoutManager = new LinearLayoutManager(c);
    recyclerView.setLayoutManager(layoutManager);
    
    new Thread(new Runnable() {
        @Override
        public void run() {
            final ListAdapter adapter = new ListAdapter(c);
            c.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    recyclerView.setAdapter(adapter);
                }
            });
        }
    }).start();
    
    return view;
    }
    }
    
  • 类 ViewPagerAdapter 。此类是选项卡的适配器

     public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    
     CharSequence Titles[]; 
     int NumbOfTabs; 
    
    
    public ViewPagerAdapter(FragmentManager fm, CharSequence mTitles[], int mNumbOfTabsumb) {
    super(fm);
    
    this.Titles = mTitles;
    this.NumbOfTabs = mNumbOfTabsumb;
    
     }
    
    @Override
    public Fragment getItem(int position) {
    
    if (position == 0) // if the position is 0 we are returning the First tab
    {
        Tab1 tab1 = new Tab1();
        return tab1;
    } else             // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab
    {
        Tab2 tab2 = new Tab2();
        return tab2;
    }
    
    }
    
    @Override
    public CharSequence getPageTitle(int position) {
       return Titles[position];
    }
    

    //该方法返回选项卡 Strip 的选项卡数量

    @Override
    public int getCount() {
      return NumbOfTabs;
    }
    }
    
  • 最佳答案

    在 Viewholder 中的 itemView 上放置一个 setOnClickListener 并编写代码以转到另一个 Activity ( Intent )

    class ViewHolder extends RecyclerView.ViewHolder
    {
    
    public TextView tvName;
    public TextView tvDes;
    
        public ViewHolder(View itemView) 
        {
            super(itemView);
            tvName = (TextView)itemView.findViewById(R.id.txtTitle);
            tvDes = (TextView)itemView.findViewById(R.id.txtSubTitle);
    
            itemView..setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View v)
                    {
                         Intent intent = new Intent(getActivity().getApplicationContext(), ActivityName.class);
                         startActivity(intent); //or startActivityForResult(REQUEST, intent);
                    }
                });
    
        }
    }
    

    关于java - RecyclerView 列表和下一个 Activity 的 Intent Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30058106/

    相关文章:

    android - Windows 10,在Qt Creator中开发Android项目

    java - 实时监控从Android应用程序发送到Php服务器的数据

    android - 如何使用 Android Studio 制作 Android 扩展文件?

    android - 如何在 cmusphinx 上进行土耳其语语音识别?

    java - 使用 COM 和 Java 在 iTunes 中创建播放列表

    java - 搜索列表中的元素

    java - 在android中将double[]转换为Number[]

    java - 枚举,在开关盒中使用

    Android——AudioManager.onAudioFocusChange() 随机触发

    java - Android Studio Newb - 自动完成或只是安装不正确?