//首先需添加依賴
compile 'com.android.support:recyclerview-v7:25.3.1'
//緊接着開始適配器
public class MPDViewAdapter extends RecyclerView.Adapter<MPDViewAdapter.MyViewHolder> { private Context mContext; private List<String> mList=new ArrayList<>(); private RightFragment.MyItemOnClickListener myItemOnClickListener; public MPDViewAdapter(Context context) { this.mContext = context; } //傳數組的方法 public void setMessage(List<String> list) { this.mList = list; } //接收一個接口 public void setMyItemOnClickListener(RightFragment.MyItemOnClickListener myItemOnClickListener) { this.myItemOnClickListener = myItemOnClickListener; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(mContext, R.layout.message, null); //優化 final MyViewHolder holder = new MyViewHolder(view); //監聽 view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //調用我們自定義接口的方法 myItemOnClickListener.onClick(view, holder.getLayoutPosition()); } }); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { MyViewHolder viewHolder = holder; viewHolder.textView.setText(mList.get(position)); } @Override public int getItemCount() { return mList.size(); } //ViewHolder優化 static class MyViewHolder extends RecyclerView.ViewHolder { private TextView textView; public MyViewHolder(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.textView); } } }
//在layout中定義一個TextView佈局 佈局名自定義,在這裏爲message
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:padding="3dp" /> </LinearLayout>
//下面就開始在佈局中定義我的頻道及更多頻道的控件了=.=
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v7.widget.RecyclerView android:layout_weight="1" android:id="@+id/recyclerView_up" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v7.widget.RecyclerView> <!--用來劃分上下的頻道--> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#f000" /> <android.support.v7.widget.RecyclerView android:layout_weight="1" android:id="@+id/recyclerView_down" android:layout_width="match_parent" android:layout_height="wrap_content" > </android.support.v7.widget.RecyclerView> </LinearLayout>
//在這裏我是在fragment中展示的數據
public class RightFragment extends Fragment { private View view; //上集合 private List<String> listUp = new ArrayList<>(); //下集合 private List<String> listDown = new ArrayList<>(); private MPDViewAdapter adapterUp; private MPDViewAdapter adapterDown; private android.support.v7.widget.RecyclerView recyclerView_up; private android.support.v7.widget.RecyclerView recyclerView_down; private PDJsonBean pd; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if(view==null){ view = View.inflate(getActivity(), R.layout.rightfragment,null); } ViewGroup parent = (ViewGroup) view.getParent(); if(parent!=null){ parent.removeView(view); } return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //添加數據 initView(); //在這裏隨意賦的值 for (int i = 0; i < 20; i++) { listDown.add("頻道" + i); } } public interface MyItemOnClickListener { void onClick(View view,int position); } private void initView() { //獲取的是控件id recyclerView_up = (RecyclerView) view.findViewById(R.id.recyclerView_up); recyclerView_down = (RecyclerView) view.findViewById(R.id.recyclerView_down); initUp(); initDown(); } private void initUp() { //創建適配器 adapterUp = new MPDViewAdapter(getActivity()); //添加數據,我們默認創建的時候是空的 adapterUp.setMessage(listUp); recyclerView_up.setAdapter(adapterUp); //RecyclerView顯示樣式 GridLayoutManager gridLayoutManagerUp = new GridLayoutManager(getActivity(),4); recyclerView_up.setLayoutManager(gridLayoutManagerUp); //點擊監聽 adapterUp.setMyItemOnClickListener(new MyItemOnClickListener() { @Override public void onClick(View view, int position) { Log.e("Up", "上" + position); //下面的RecyclerView添加當前點擊的條目信息並刷新數組 listDown.add(listUp.get(position)); adapterDown.setMessage(listDown); adapterDown.notifyDataSetChanged(); //從當前數組移除數據並刷新數組 listUp.remove(position); adapterUp.setMessage(listUp); adapterUp.notifyDataSetChanged(); } }); } private void initDown() { adapterDown = new MPDViewAdapter(getActivity()); adapterDown.setMessage(listDown); recyclerView_down.setAdapter(adapterDown); GridLayoutManager gridLayoutManagerDown = new GridLayoutManager(getActivity(), 4); recyclerView_down.setLayoutManager(gridLayoutManagerDown); adapterDown.setMyItemOnClickListener(new MyItemOnClickListener() { @Override public void onClick(View view, int position) { Log.e("Down", "下" + position); //下面的RecyclerView添加當前點擊的條目信息並刷新數組 listUp.add(listDown.get(position)); adapterUp.setMessage(listUp); adapterUp.notifyDataSetChanged(); //從當前數組移除數據並刷新數組 listDown.remove(position); adapterDown.setMessage(listDown); adapterDown.notifyDataSetChanged(); } }); } }