RecyclerView
创建步骤:
-
创建activity,顺便创建.xml文件,将recyclerView控件加入到.xml文件中去
在XXXActivity文件的
onCreate(Bundle savedInstanceState)
中进行编写- 通过
findViewById
找到控件
//获取RecyclerView对象 mRecyclerView = findViewById(R.id.hole_rv);
- 配置
layoutManager
//设置layoutManager LinearLayoutManager layoutManager = new LinearLayoutManager(HoleActivity.this); mRecyclerView.setLayoutManager(layoutManager);
- 配置adapter(并编写java类)
//设置adapter mMyAdapter = new HoleAdapter(HoleActivity.this, post_list); mRecyclerView.setAdapter(mMyAdapter);
- 设置Decoration分割线
//设置Decoration分割线 DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL); decoration.setDrawable(getResources().getDrawable(R.drawable.divider, null)); mRecyclerView.addItemDecoration(decoration);
- 通过
-
编写adapter类文件
创建myAdapter文件并进行编写
-
首先
extends RecyclerView.Adapter<ViewHolder>
-
编写构造函数(一般需要语境context以及数据list)
public HoleAdapter(Context hole_context, List<post> list) { context = hole_context; post_list = list; }
-
再编写自己的myHolderr类,用来获取item对象(需要先创建item_XXX.xml文件)
/** * @Description: 创建自己的Holder, 获取item对象 * @Param: * @return: * @Author: YAO * @Date: 2022/3/5 */ public class myHolder extends RecyclerView.ViewHolder { TextView post_text; public myHolder(@NonNull View itemView) { super(itemView); post_text = itemView.findViewById(R.id.item_tv); } }
-
将
RecyclerView.Adapter<ViewHolder>
改为RecyclerView.Adapter<myAdapter.myHolder>
-
重写函数
onCreateViewHolder()
(绑定item视图)/** * @Description: 绑定item视图 * @Param: [parent, viewType] * @return: com.example.xkkh.adapter.HoleAdapter.myHolder * @Author: YAO * @Date: 2022/3/5 */ @NonNull @Override public myHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_hole, parent, false); myHolder myHolder = new myHolder(view); return myHolder; }
-
重写函数
onBindViewHolder()
(绑定item数据)/** * @Description: 绑定item数据 * @Param: [holder, position] * @return: void * @Author: YAO * @Date: 2022/3/5 */ @Override public void onBindViewHolder(@NonNull myHolder holder, int position) { post post = post_list.get(position); holder.post_text.setText(post.post_context); }
-
重写函数
getItemCount()
(返回item个数)/** * @Description: 返回item数量 * @Param: [] * @return: int * @Author: YAO * @Date: 2022/3/5 */ @Override public int getItemCount() { return post_list.size(); }
至此Recycler的设置完成
-