2
我創建使用RecyclerView
名單,我想,如果用戶觸摸在該列表中的項目,將用戶重定向到另一個activity
.Noted,我有一個tab
list
。如何實現這一目標?這是我到目前爲止所嘗試過的。RecyclerView列表和意圖下一個活動的Android
- 類List適配器
公共類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);
}
}
}
類LISTNAME。這個類是用來設置和獲取名稱和描述
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。這個類是
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]; }
//此方法返回標籤的標籤數條
@Override public int getCount() { return NumbOfTabs; } }
我在getActivity()中有錯誤getApplicationContext和startActivit Y(意圖)。這是因爲它無法解析getActivity和startActivity。如何解決它?謝謝 – chemat92
它的getActivity()。getApplicationContext()與括號..(或者,也許你可以嘗試ActivityName.this代替) 和通常解決startActivity不應該給問題 –
我已經嘗試過,但它仍然顯示錯誤'無法解析方法getActivity()'有沒有我沒有應用的東西? – chemat92