1.导入依赖:
implementation 'com.android.support:recyclerview-v7:24.2.1'
2.xml布局:
<!--列表,网格式--> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="100dp"> </android.support.v7.widget.RecyclerView> <!--正常,垂直--> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:id="@+id/rv2" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v7.widget.RecyclerView>
3.逻辑代码编写
思路:初始化,准备数据,设置显示方式(个人理解,读者勿喷)
A.activity中的代码:
a.初始化:
private RecyclerView rv1; private RecyclerView rv2; rv1 =findViewById(R.id.rv2); rv2 =findViewById(R.id.recycler);
b.数据 private void initData() { for (int i = 0; i < 100; i++) { BJTJInfo info = new BJTJInfo("测试数据"+i,i); list.add(info); } } c.设置显示方式 LinearLayoutManager layoutManager =new LinearLayoutManager(this); rv1.setLayoutManager(layoutManager); adapter1 = new MyAdapterRecycler_Line(list); rv1.setAdapter(adapter1);
c步骤中的适配器代码逻辑整理:
1.新建一个类继承
RecyclerView.Adapter<MyAdapterRecycler_Line.ViewHolder>
注:此处的ViewHolder是内部类
2.必须要实现方法:
//构造方法 public MyAdapterRecycler_Line(List<BJTJInfo> bjtjInfos) { this.bjtjInfos = bjtjInfos; } //加载布局 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.bjtj_item,parent,false); ViewHolder holder =new ViewHolder(view,mItemClickListener); return holder; } //绑定数据 @Override public void onBindViewHolder(ViewHolder holder, final int position) { holder.content.setText(bjtjInfos.get(position).getContent()); holder.count.setText(bjtjInfos.get(position).getCount()+""); } //数据条数 @Override public int getItemCount() { return bjtjInfos.size(); }
//内部类,红色字体是做item点击事件 static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ private MyItemClickListener clickListener; TextView content; TextView count; public ViewHolder(View view,MyItemClickListener mItemClickListener) { super(view); this.clickListener = mItemClickListener; content = view.findViewById(R.id.tv_content); count = view.findViewById(R.id.tv_count); view.setOnClickListener(this); } @Override public void onClick(View v) { if (clickListener != null) { clickListener.onItemClick(v, getPosition()); } } }
4.返回到activity中代码编写recycle显示方式
LinearLayoutManager layoutManager =new LinearLayoutManager(this); rv1.setLayoutManager(layoutManager); adapter1 = new MyAdapterRecycler_Line(list); rv1.setAdapter(adapter1);
rv2.setLayoutManager(new GridLayoutManager(MainActivity.this.getBaseContext(),3)); MyAdapterRecycler_Line adapter = new MyAdapterRecycler_Line(bjtjInfos); rv2.setAdapter(adapter);
基本使用结束