1.AndroidStudio3.4中引入recyclerview的依赖

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.recyclerview:recyclerview:1.0.0-alpha1'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

添加完记得点击一下Sync Now来进行同步。
2.修改activity_main.xml中的代码

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </androidx.recyclerview.widget.RecyclerView>
</LinearLayout>

将宽度和高度都设置为match_parent,这样recyclerview就沾满整个布局了。因为Recyclerview没有内置在sdk中,所以要把完整的包路径写出来。
3.新建实体类,这里以Fruit类为例。

public class Fruit { private String name; private int imageId; public Fruit(String name, int imageId){ this.name = name; this.imageId = imageId; public int getImageId() { return imageId; public void setImageId(int imageId) { this.imageId = imageId; public String getName() { return name; public void setName(String name) { this.name = name;

4.新建fruit_item.xml文件,作为RecyclerView中每一条数据的布局文件。可以任意布局,这里以一张图片和一个textview为例。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="水果图片" />
    <TextView
        android:id="@+id/fruit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="10dp"
        android:text="水果名"/>
</LinearLayout>

5.自定义Adapter。
新建FruitAdapter,继承自RecyclerView.Adapter,并将泛型指定为FruitAdapter.ViewHolder。其中,ViewHolder是我们在FruitAdapter中定义的内部类。

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> {
    private List<Fruit> myFruitList;
    public FruitAdapter(List<Fruit> fruitList){
        myFruitList  = fruitList;
    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView fruitImage;
        TextView fruitName;
        public ViewHolder(View view){
            super(view);
            fruitImage = view.findViewById(R.id.fruit_image);
            fruitName = view.findViewById(R.id.fruit_name);
     * 用于创建ViewHolder实例
     * 将子布局加载进来,创建ViewHolder实例,将子布局传进去,
     * @param parent
     * @param viewType
     * @return
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);
        final ViewHolder viewHolder = new ViewHolder(view);
        return viewHolder;
     * 对子项赋值
     * 在每个子项被滚动到屏幕内时执行
     * @param holder
     * @param position
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Fruit fruit = myFruitList.get(position);
        holder.fruitImage.setImageResource(fruit.getImageId());
        holder.fruitName.setText(fruit.getName());
    @Override
    public int getItemCount() {
        return myFruitList.size();

解释一下,首先定义了一个内部类ViewHolder,继承自RecyclerView.ViewHolder。然后写一下ViewHolder的构造函数,传入一个View参数,这个View参数通常是RecyclerView子项的最外层布局,就是我们这里所说的fruit_item.xml布局。
接下来写FruitAdapter的构造函数,这个方法用于把要展示的数据源传进来,并赋值给一个全局变量myFruitList,后续操作都在这个数据源的基础上进行。
最后,重写onCreateViewHolder()、onBindViewHolder()和getItem()这三个方法。
onCreateViewHolder()方法:
用于创建ViewHolder的实例。

LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false);

用这句话获取RecyclerView中的子布局。
调用ViewHolder的构造方法,将刚得到的这个子布局view传入,并返回构造出来的ViewHolder实例。
onBindViewHolder()方法:
用于对RecyclerView的子项数据进行赋值,在每个子项被滚动到屏幕内时执行。
首先通过position参数得到当前项的fruit实例,然后将数据设置到ViewHolder的ImageView和TextView中。
getItemCount():
用于告诉RecyclerView一共有多少子项。
直接返回数据源(即这里的myFruitList)的长度即可。
6.开始使用RecyclerView。
修改MainActivity中的代码:

public class MainActivity extends AppCompatActivity {
    private List<Fruit> fruitList = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initFruits();
        RecyclerView recyclerView = findViewById(R.id.recycler_view);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
        FruitAdapter fruitAdapter = new FruitAdapter(fruitList);
        recyclerView.setAdapter(fruitAdapter);
    private void initFruits(){
        //三层循环是为了让数据充满屏幕,可方便看到屏幕滚动查看数据的效果,由于没有去找图片,这里就放了android自带的图片
        for(int i=0;i<3;i++){
            Fruit apple = new Fruit("apple", R.drawable.ic_launcher_background);
            fruitList.add(apple);
            Fruit banana = new Fruit("banana", R.drawable.ic_launcher_background);
            fruitList.add(banana);
            Fruit grape = new Fruit("grape", R.drawable.ic_launcher_background);
            fruitList.add(grape);

解释一下:
initFruits()方法用于初始化数据。
首先实例化一个LinearLayoutManager,
并将这个LinearLayoutManager设置给recyclerView。
然后通过FruitAdapter的构造方法将数据传给FruitAdapter的实例。
最后将fruitAdapter设置给recyclerView。
这样RecyclerView与数据之间的关联就建立完成了。
这里的LinearLayoutManager是线性布局的意思,可以实现和ListView类似的效果。
7.为RecyclerView添加点击事件。
RecyclerView并没有提供类似于ListView中类似setOnItemClickListener()这样的注册监听器方法。而需要我们自己给子项具体的view注册点击事件。
注:说一下RecyclerView这样做的目的。ListView中的setOnItemClickListener()注册的是子项的点击事件,但是如果我想点击的是子项里具体的某一个按钮,实现起来就比较麻烦了。而RecyclerView将所有的点击事件都交给具体的View去注册,实现起来就简单多了。
修改FruitAdaper中的代码,急于实现效果的小伙伴可直接将这段复制覆盖掉上面的FruitAdaper的代码。

public class FruitAdapter extends RecyclerView.Adapter<FruitAdapter.ViewHolder> { private List<Fruit> myFruitList; public FruitAdapter(List<Fruit> fruitList){ myFruitList = fruitList; static class ViewHolder extends RecyclerView.ViewHolder{ View fruitView; ImageView fruitImage; TextView fruitName; public ViewHolder(View view){ super(view); fruitView = view; fruitImage = view.findViewById(R.id.fruit_image); fruitName = view.findViewById(R.id.fruit_name); * 用于创建ViewHolder实例 * 将子布局加载进来,创建ViewHolder实例,将子布局传进去, * @param parent * @param viewType * @return @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fruit_item,parent,false); final ViewHolder viewHolder = new ViewHolder(view); viewHolder.fruitView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int position = viewHolder.getAdapterPosition(); Fruit fruit = myFruitList.get(position); Toast.makeText(view.getContext(),"你点击了"+fruit.getName(),Toast.LENGTH_SHORT).show(); }); viewHolder.fruitImage.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { int position = viewHolder.getAdapterPosition(); Fruit fruit = myFruitList.get(position); Toast.makeText(view.getContext(),"你点击了图片"+fruit.getName(),Toast.LENGTH_SHORT).show(); }); return viewHolder; * 对子项赋值 * 在每个子项被滚动到屏幕内时执行 * @param holder * @param position @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Fruit fruit = myFruitList.get(position); holder.fruitImage.setImageResource(fruit.getImageId()); holder.fruitName.setText(fruit.getName()); @Override public int getItemCount() { return myFruitList.size();

在这里插入图片描述
效果图:
点击列表
在这里插入图片描述
点击图片
在这里插入图片描述

横向滚动的RecyclerView
因为要实现横向滚动,所以子布局设置成垂直排列比较合理。
修改fruit_item.xml的代码:
在这里插入图片描述
在MainActivity的onCreate()方法中增加一句代码就可以实现横向滚动啦。

layoutManager.aetOrientation(LinearLayoutManager.HORIZONTAL);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RecyclerView还提供了GirdLayoutManager(实现网格布局)和StaggeredGirdLayoutManager(实现瀑布流布局)。
瀑布流布局的实现:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

AndroidStudio3.4中引入recyclerview的依赖dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.0.2' implementation 'androidx.cons... 利用Window.addView(),滑动时updatePosition 利用RecyclerView.addView(),滑动时改变漂浮控件floatView的layoutParams.margin 第一种,利用Window更新位置稍微复杂点,放弃。 第二种,Recycl... 上来先说明一下我的编译器版本是as4.0 beta2。 gradle:4.0.0-beta02,对应gradle-6.2.2-all.zip。 关于viewbiding的作用,我这里直接引用android开发者网站上的话: 通过视图绑定功能,您可以更轻松地编写可与视图交互的代码。在模块中启用视图绑定之后,系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具... 1、布局文件引入 &amp;amp;lt;android.support.v7.widget.RecyclerView android:id=&amp;quot;@+id/common_recycler&amp;quot; and...
1 RecycleView设置了数据不显示 本文主要讲一下我个人对于RecycleView的使用的一些思考以及一些常见的问题怎么解决。先来看一下使用RecycleView时常见的问题以及一些需求。 这个往往是因为你没有设置LayoutManger。 没有LayoutManger的话RecycleView是无法布局的,即是无法展示数据,下面是RecycleView布局的源码: void disp...
<h3>回答1:</h3><br/>在Android Studio中添加RecyclerView-v7库的步骤如下: 1. 在build.gradle文件中,找到dependencies的部分。 2. 在dependencies中添加以下代码: implementation 'com.android.support:recyclerview-v7:27.1.1' 3. 点击sync now按钮同步gradle文件即可。 这样,就成功将RecyclerView-v7库添加到Android Studio中了。 <h3>回答2:</h3><br/>Android Studio是用于开发Android应用程序的集成开发环境(IDE)。RecyclerView是一种新的视图组件,可用于在Android应用程序中跨平台显示数据集合或列表,而recyclerview-v7库则是使用RecyclerView的一种常用方法。本文将介绍如何在Android Studio中添加recyclerview-v7库以使用RecyclerView。 一、添加依赖项 1. 在Android Studio中,打开您的项目文件,并选择位于您项目的根目录下的build.gradle(Module: app)文件。 2. 在dependencies代码块中添加以下代码: dependencies { implementation 'com.android.support:recyclerview-v7:VERSION_CODE' 注意:您需要将VERSION_CODE替换为最新的recyclerview-v7版本号。您可以在以下链接中找到最新的版本号:https://developer.android.com/jetpack/androidx/releases/recyclerview 3. 单击Sync Now,以将recyclerview-v7库添加到您的项目中。 二、使用RecyclerView recyclerview-v7依赖项添加到Android Studio后,您可以开始使用RecyclerView了。以下是一个简单的示例: 1. 在您的布局文件中,创建一个RecyclerView视图组件。例如,您可以添加以下代码: <androidx.recyclerview.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"/> 2. 在您的Activity或Fragment中,使用findViewById方法获取RecyclerView,然后创建一个LayoutManager和Adapter实例。例如,您可以添加以下代码: RecyclerView recyclerView = findViewById(R.id.my_recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new MyAdapter()); 3. 您还需要创建一个Adapter类,以便RecyclerView可以显示和更新数据集。例如,您可以创建以下方法: public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private String[] mDataset = {"Item 1", "Item 2", "Item 3"}; public static class MyViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public MyViewHolder(View v) { super(v); mTextView = v.findViewById(R.id.textView); @Override public MyAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()) .inflate(R.layout.my_text_view, parent, false); MyViewHolder vh = new MyViewHolder(v); return vh; @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.mTextView.setText(mDataset[position]); @Override public int getItemCount() { return mDataset.length; 其中,mDataset是您要在RecyclerView中显示的数据集合。 4. 最后,您需要创建一个TextView布局文件,以便MyAdapter实例调用onCreateViewHolder方法时可以返回相应的视图。这是一个非常简单的示例: <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp" android:padding="16dp" /> 通过以上步骤,您已经可以在您的Android应用程序中使用RecyclerViewrecyclerview-v7库来显示数据集合或列表啦! <h3>回答3:</h3><br/>在使用Android Studio进行开发时,我们常常需要使用RecyclerView来展示列表数据。RecyclerView是一种通用的控件,它可以用来展示任何类型的数据。在使用RecyclerView时,我们需要添加recyclerview-v7库来支持RecyclerView的使用。 首先,我们需要在我们的项目中添加recyclerview-v7库。在Android Studio中,可以通过以下步骤来实现: 1. 在项目的build.gradle文件中,添加以下代码: ```groovy dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' 注意:这里的28.0.0表示使用的版本号,可以根据我们的实际需要进行修改。 2. 在Android Studio中,点击Sync Now按钮来同步项目。这样,我们就成功地添加了recyclerview-v7库。 在项目中添加了recyclerview-v7库后,我们就可以在布局文件中使用RecyclerView控件了。以下是一个简单的示例: ```xml <android.support.v7.widget.RecyclerView android:id="@+id/rv_list" android:layout_width="match_parent" android:layout_height="match_parent" /> 在代码中,我们可以使用RecyclerView.Adapter类来适配RecyclerView控件中的数据。以下是一个简单的示例代码: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; public MyAdapter(List<String> data) { mData = data; @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.tvText.setText(mData.get(position)); @Override public int getItemCount() { return mData.size(); public static class ViewHolder extends RecyclerView.ViewHolder { TextView tvText; public ViewHolder(View itemView) { super(itemView); tvText = itemView.findViewById(R.id.tv_text); 在代码中,我们首先创建了一个MyAdapter类,它继承自RecyclerView.Adapter类。在MyAdapter类中,我们定义了一个ViewHolder类,用来管理每个列表项中的控件。在MyAdapter类中,我们也重写了onCreateViewHolder、onBindViewHolder和getItemCount方法。在onCreateViewHolder方法中,我们创建了一个ViewHolder对象,我们使用LayoutInflater来从布局文件中加载该ViewHolder对象中包含的控件。在onBindViewHolder方法中,我们通过数据源来设置每个列表项中的数据。在getItemCount方法中,我们返回数据源的大小。 使用RecyclerView是非常方便的,它可以轻松地展示列表数据。在Android Studio中,添加recyclerview-v7库并使用RecyclerView控件通常是非常容易的。
新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo 84455 新建SpringBoot项目运行页面报错Whitelabel Error Page This application has no explicit mapping for /error, so yo 2301_78017092: 我的这个出错怎么办呢 VSCode svn忽略文件提交 周星星在吗: 设置了还是不行 VSCode svn忽略文件提交 itscL: 好像不太行 若依框架代码生成(前后端分离-后端单应用版本) 叮叮当当0543: 没尝试过写成com.xx,猜测报404原因可能是,启动类RuoYiApplication在com.ruoyi下面,com.xx下面没有启动类,com.xx里的接口也就没有启动起来。 若依框架代码生成(前后端分离-后端单应用版本) weiranxinian: 生成包路径“packageName”可以写成com.xx 吗,然我我导入项目启动访问业务模块接口包404