首先需添加依赖
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:id="@+id/recyclerView_up"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<!--用来划分上下的频道-->
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#f000" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView_down"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</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();
}
});
}
}