我使用 RecyclerView
创建了一个列表,我希望如果用户触摸该列表中的某个项目,它会将用户重定向到另一个 Activity
。请注意,我选项卡
中有list
。如何实现这一目标?这是我到目前为止所尝试过的。
- 类列表适配器
公共(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/