android開發(fā) 最精簡(jiǎn)的 RecyclerView
啊,關(guān)于RecyclerView的帖子講的實(shí)在是太詳細(xì)太繁瑣了,
我這里弄一個(gè)最簡(jiǎn)單的,要做復(fù)雜的東西也是從簡(jiǎn)單的開始!
用到的東西分4塊??
·????????????????????? ?RecyclerView? ?XML布局?
????????????????????? ??Activity 的設(shè)置代碼
????????????????????????Adapter 設(shè)置RecyclerView 里面的實(shí)質(zhì)內(nèi)容
????????????????????????Adapter 使用到的布局文件
1 首先是布局,直接復(fù)制拿走把,可以隨便改
? ?<android.support.v7.widget.RecyclerView
? ? ? ? android:id="@+id/rv_list"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" />
------------我是分割線------------------------
2 Activity部分代碼? 就是聲明一些變量 然后一個(gè)函數(shù)方法
?????private RecyclerView mRecycleView;
? ? private NewAdapter mAdapter;//適配器
? ? private LinearLayoutManager mLinearLayoutManager;//布局管理器
? ? private List mList;
? ? Context mContext;
? ? private void SetRecycleView() {
? ? ? ? mList = new ArrayList();
// 這里是數(shù)據(jù),可以根據(jù)實(shí)際需要來修改類型 改了之后 取的部分跟著修改就好
? ? ? ? for (int i = 0; i < 5; i++) {
? ? ? ? ? ? mList.add("" + i);
? ? ? ? }
? ? ? ? mRecycleView = (RecyclerView) findViewById(R.id.rv_list);
? ? ? ? //創(chuàng)建布局管理器,垂直設(shè)置LinearLayoutManager.VERTICAL,水平設(shè)置LinearLayoutManager.HORIZONTAL
? ? ? ? mLinearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
? ? ? ? //創(chuàng)建適配器,將數(shù)據(jù)傳遞給適配器
? ? ? ? mAdapter = new NewAdapter(mList, mContext);
? ? ? ? //設(shè)置布局管理器
? ? ? ? mRecycleView.setLayoutManager(mLinearLayoutManager);
? ? ? ? //設(shè)置適配器adapter
? ? ? ? mRecycleView.setAdapter(mAdapter);
? ? }
------------我是分割線------------------------
? ? /**
? ? ?* 切換數(shù)據(jù)? 這里放個(gè)切換刷新的方法 就是更改mList 后調(diào)用notifyDataSetChanged
? ? ?* 沒這需要的可以無視這個(gè)方法
? ? ?*/
? ? private void Switch() {
? ? ? ? mList.clear();//清除數(shù)據(jù)
? ? ? ? mAdapter.notifyDataSetChanged();//刷新RecycleView
? ? }
------------我是分割線------------------------
3 Adapter 部分 你可以在這里更改對(duì)應(yīng)的布局,對(duì)應(yīng)的數(shù)據(jù),對(duì)應(yīng)的點(diǎn)擊事件等等
public class NewAdapter extends RecyclerView.Adapter<NewAdapter.MyHolder> {
? ? private List mList;//數(shù)據(jù)源
? ? Context mContext;
? ? public NewAdapter(List list, Context mContextS) {
? ? ? ? mList = list;
? ? ? ? mContext = mContextS;
? ? }
? ? //創(chuàng)建ViewHolder并返回,后續(xù)item布局里控件都是從ViewHolder中取出
? ? @Override
? ? public NewAdapter.MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
? ? ? ? //將我們自定義的item布局R.layout.item_one轉(zhuǎn)換為View
? ? ? ? View view = LayoutInflater.from(parent.getContext())
? ? ? ? ? ? ? ? .inflate(R.layout.item_new_adapter, parent, false);
? ? ? ? //將view傳遞給我們自定義的ViewHolder
? ? ? ? NewAdapter.MyHolder holder = new NewAdapter.MyHolder(view);
? ? ? ? //返回這個(gè)MyHolder實(shí)體
? ? ? ? return holder;
? ? }
? ? //通過方法提供的ViewHolder,將數(shù)據(jù)綁定到ViewHolder中
? ? @Override
? ? public void onBindViewHolder(NewAdapter.MyHolder holder, int position) {
? ? ? ? holder.tv1.setText(mList.get(position).toString());
? ? }
? ? //獲取數(shù)據(jù)源總的條數(shù)
? ? @Override
? ? public int getItemCount() {
? ? ? ? return mList.size();
? ? }
? ? /**
? ? ?* 自定義的ViewHolder
? ? ?*/
? ? class MyHolder extends RecyclerView.ViewHolder {
? ? ? ? TextView tv1;
? ? ? ? public MyHolder(View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? tv1 = itemView.findViewById(R.id.tv1);
? ? ? ? ? ? tv1.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? }
}
------------我是分割線------------------------
4 Adapter?對(duì)應(yīng)的布局文件,當(dāng)然你新建一個(gè)也是可以,
我這里只列了一個(gè)TextView,一般需求都要自己修改 ID對(duì)得上,能取到修改就沒問題了
<?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="wrap_content"
? ? android:orientation="vertical">
? ? ? ? ? ? <TextView
? ? ? ? ? ? ? ? android:id="@+id/tv1"
? ? ? ? ? ? ? ? android:layout_width="0dp"
? ? ? ? ? ? ? ? android:layout_height="match_parent"
? ? ? ? ? ? ? ? android:layout_weight="1"
? ? ? ? ? ? ? ? android:gravity="center_vertical"
? ? ? ? ? ? ? ? android:text="2023/0605"
? ? ? ? ? ? ? ? android:textColor="#000000"
? ? ? ? ? ? ? ? android:textSize="@dimen/text_1"
? ? ? ? ? ? ? ? android:textStyle="bold" />
</LinearLayout>