che*_*t92 2 java android android-studio android-recyclerview
我已经使用创建了一个列表RecyclerView
,我希望如果用户触摸该列表中的一个项目,它会将用户重定向到另一个activity
.注意我list
在tab
. 如何实现这一目标?这是我迄今为止尝试过的。
公共类 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)
类列表名称。该类用于设置和获取名称和描述
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)类 Tab1。这是fragment
Tab1的类。
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)类 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)在 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)
归档时间: |
|
查看次数: |
1663 次 |
最近记录: |