RecycleView的RV的垂直排列。

新建一个包来储存RecycleView:

截屏2020-02-21下午12.55.22.png

将RecycleView创建一个Activity来当作目录:

<?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:padding=”20dp”

    android:orientation=”vertical”

    android:gravity=”center”

    >

    <Button

        android:id=”@+id/buttonlist”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:text=”RecycleView的列表

        android:textAllCaps=”false”

        android:textColor=”@color/Black”

        android:textSize=”25sp”

        />

    <Button

        android:id=”@+id/buttonHor”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:text=”RecycleView的横向列表

        android:textAllCaps=”false”

        android:textColor=”@color/Black”

        android:textSize=”25sp”

        />

    <Button

        android:id=”@+id/buttonGrid”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:text=”RecycleView的网格列表

        android:textAllCaps=”false”

        android:textColor=”@color/Black”

        android:textSize=”25sp”

        />

    <Button

        android:id=”@+id/buttonSn”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:text=”RecycleView的瀑布流列表

        android:textAllCaps=”false”

        android:textColor=”@color/Black”

        android:textSize=”25sp”

        />

</LinearLayout>

截屏2020-02-21下午12.57.54.png

package com.example.myfirstapplication.RecyclerView;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import com.example.myfirstapplication.R;

public class ARecycleViewActivity extends AppCompatActivity {

    private Button buttonlist,buttonHor,buttonGrid,buttonSn;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_recycle_view);

        buttonlist = findViewById(R.id.buttonlist);

        buttonlist.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(ARecycleViewActivity.this, listrecyleviewActivity.class);

                startActivity(intent);

            }

        });

        buttonHor = findViewById(R.id.buttonHor);

        buttonHor.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(ARecycleViewActivity.this, HorRecycleViewActivity.class);

                startActivity(intent);

            }

        });

        buttonGrid = findViewById(R.id.buttonGrid);

        buttonGrid.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(ARecycleViewActivity.this,GridRecyclerActivity.class);

                startActivity(intent);

            }

        });

        buttonSn = findViewById(R.id.buttonSn);

        buttonSn.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent(ARecycleViewActivity.this,StaggeredGridActivity.class);

                startActivity(intent);

            }

        });

    }

}

首先为第一个:RecycleView的列表:

新建一个Acitivty然后:

新建一个RecycleView:

<?xml version=”1.0″ encoding=”utf-8″?>

<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”

    android:layout_width=”match_parent”

    android:layout_height=”match_parent”

    >

    <androidx.recyclerview.widget.RecyclerView

        android:id=”@+id/rv”

        android:layout_width=”match_parent”

        android:layout_height=”match_parent”

        />

</RelativeLayout>

然后去java文件声明:

package com.example.myfirstapplication.RecyclerView;

import androidx.appcompat.app.AppCompatActivity;

import androidx.recyclerview.widget.LinearLayoutManager;

import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.example.myfirstapplication.R;

public class listrecyleviewActivity extends AppCompatActivity {

    private RecyclerView rv;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_recyle_view_list);

        rv = findViewById(R.id.rv);        rv.setLayoutManager(newLinearLayoutManager(listrecyleviewActivity.this;

        //这里是一定要设计的。他有很多种布局。LinearLayoutManager线性的,GridLayoutManager,StaggeredGridLayoutManager瀑布流的布局。

        //他也要有setAdpter

        rv.setAdapter(new listAdpter(listrecyleviewActivity.this));

    }

}

这个也要setAdapter所以要:

有这个:

截屏2020-02-21下午1.04.31.png

首先新建一个java文件让其继承

然后我们自己写一个class。让那个class继承一个ViewHolder。再让该java文件来继承我们自己写的class:

大概就是这样:

package com.example.myfirstapplication.RecyclerView;

import android.view.View;

import android.view.ViewGroup;

import android.widget.LinearLayout;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

public class listAdpter extends RecyclerView.Adapter<listAdpter.listAdpterViewHold> {

    @NonNull

    @Override

    public listAdpter.listAdpterViewHold onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        return null;

    }

    @Override

    public void onBindViewHolder(@NonNull listAdpter.listAdpterViewHold holder, int position) {

    }

    @Override

    public int getItemCount() {

        return 30;

    }

    class listAdpterViewHold extends RecyclerView.ViewHolder{

        public listAdpterViewHold(@NonNull View itemView) {

            super(itemView);

        }

    }

}

然后去设计item:

为了简单我就只写一个TextView:

<?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”

    android:background=”@color/White”>

    <TextView

        android:id=”@+id/tv”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:textSize=”25sp”

        android:gravity=”center”

        android:background=”@color/yellow”

        android:layout_marginBottom=”5dp”

        />

</LinearLayout>

然后回到java:

package com.example.myfirstapplication.RecyclerView;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.LinearLayout;

import android.widget.TextView;

import android.widget.Toast;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

import com.example.myfirstapplication.R;

public class listAdpter extends RecyclerView.Adapter<listAdpter.listAdpterViewHold> {

    @NonNull

    private Context context;

    private LayoutInflater layoutInflater;

    public listAdpter(Context context) {

        this.context = context;

    }

    public listAdpter.listAdpterViewHold onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        return new listAdpterViewHold(LayoutInflater.from(context).inflate(R.layout.once_recycleview_list, parent, false));

    }

//这里的return要有一个返回值那我们就要把我们的listAdpterViewHold   

New一个进去,然后我们的listAdpterViewHold 里面要填一个参数View itemView。而这个就是一个指定的函数。

那我们就像之前一样写一个构造器。

把context和LayoutInflater写进来。

    @Override

    public void onBindViewHolder(@NonNull listAdpter.listAdpterViewHold holder, final int position) {

        holder.tv.setText(“test!”);

        holder.itemView.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Toast.makeText(context,“click”+position,Toast.LENGTH_LONG).show();

            }

        });

    }

    @Override

    public int getItemCount() {

        return 30;

    }

    class listAdpterViewHold extends RecyclerView.ViewHolder {

        private TextView tv;

        public listAdpterViewHold(@NonNull View itemView) {

            super(itemView);

            tv = itemView.findViewById(R.id.tv);

        }

    }

}

回到之前的java文件:

rv.setAdapter(new listAdpter(listrecyleviewActivity.this));

把Adapter设置好:

截屏2020-02-21下午1.14.15.png
最后修改日期:2020年2月21日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。