RecyclerView 列表和下一个活动 Android 的意图

che*_*t92 2 java android android-studio android-recyclerview

我已经使用创建了一个列表RecyclerView,我希望如果用户触摸该列表中的一个项目,它会将用户重定向到另一个activity.注意我listtab. 如何实现这一目标?这是我迄今为止尝试过的。

  1. 类列表适配器

公共类 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);
    }
    }

    } 
Run Code Online (Sandbox Code Playgroud)
  1. 类列表名称。该类用于设置和获取名称和描述

      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;
      }
    
      } 
    
    Run Code Online (Sandbox Code Playgroud)
  2. 类 Tab1。这是fragmentTab1的类。

     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;
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 类 ViewPagerAdapter。这个类adapter用于标签

     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];
    }
    
    Run Code Online (Sandbox Code Playgroud)

    // 此方法返回选项卡条的选项卡数

    @Override
    public int getCount() {
      return NumbOfTabs;
    }
    }
    
    Run Code Online (Sandbox Code Playgroud)

Nik*_*ite 5

在 Viewholder 的 itemView 上放置一个 setOnClickListener 并编写代码以转到另一个活动(意图)

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);
                }
            });

    }
}
Run Code Online (Sandbox Code Playgroud)