RecycleView的RV的瀑布流排列:

新建Activity

package com.example.myfirstapplication.RecyclerView;

import androidx.appcompat.app.AppCompatActivity;

import androidx.recyclerview.widget.RecyclerView;

import androidx.recyclerview.widget.StaggeredGridLayoutManager;

import android.os.Bundle;

import com.example.myfirstapplication.R;

public class StaggeredGridActivity extends AppCompatActivity {

    private RecyclerView rv_staggered;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_staggered_grid);

        rv_staggered = findViewById(R.id.rv_staggered);

        rv_staggered.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));

        //一个参数表示有多少列,一个表示怎么分布,这个为垂直。

        rv_staggered.setAdapter(new StaggeredAdapter(StaggeredGridActivity.this));

    }

}

然后去写Adapter:

package com.example.myfirstapplication.RecyclerView;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import android.widget.TextView;

import android.widget.Toast;

import androidx.annotation.NonNull;

import androidx.recyclerview.widget.RecyclerView;

import com.example.myfirstapplication.R;

public class StaggeredAdapter extends RecyclerView.Adapter<StaggeredAdapter.StaggeredAdapterViewHolder> {

    @NonNull

    private Context context;

    private LayoutInflater layoutInflater;

    public StaggeredAdapter(Context context){

        this.context = context;

    }

    public StaggeredAdapter.StaggeredAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        return new StaggeredAdapterViewHolder(LayoutInflater.from(context).inflate(R.layout.once_pubu,parent,false));

    }

    @Override

    public void onBindViewHolder(@NonNull StaggeredAdapter.StaggeredAdapterViewHolder holder, final int position) {

        final double d = Math.random();

        final int i = (int)(d*100);

        if ((position+i) % 2 == 0){

            holder.iv.setImageResource(R.drawable.heng);

        }else {

            holder.iv.setImageResource(R.drawable.shu);

        }

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

            @Override

            public void onClick(View v) {

                Toast.makeText(context,“Dont Cilck me”+position,Toast.LENGTH_LONG).show();

            }

        });

    }

要做到每一个框放不同的东西那我们就加一个判断。

 final double d = Math.random();

        final int i = (int)(d*100);

        if ((position+i) % 2 == 0){

让他放的没有规律。

    class StaggeredAdapterViewHolder extends RecyclerView.ViewHolder{

        private ImageView iv;

        private TextView tv1,tv2,tv3;

        public StaggeredAdapterViewHolder(@NonNull View itemView) {

            super(itemView);

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

            tv1 = itemView.findViewById(R.id.tvjs);

            tv2 = itemView.findViewById(R.id.user);

            tv3 = itemView.findViewById(R.id.usernsme);

        }

    }

    @Override

    public int getItemCount() {

        return 30;

    }

}

Pubu的xml文件设计是按照淘宝网的来设计的:

我想静可能的还原他:

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

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

    android:layout_width=”wrap_content”

    android:layout_height=”wrap_content”

    android:orientation=”vertical”

    android:background=”@drawable/bu_4″

    android:layout_margin=”10dp”

    >

    <ImageView

        android:id=”@+id/iv”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:src=”@drawable/heng”

        android:scaleType=”center”

        android:background=”@drawable/bu_4″

        />

    <TextView

        android:id=”@+id/tvjs”

        android:layout_width=”match_parent”

        android:layout_height=”wrap_content”

        android:textSize=”25sp”

        android:text=”@string/text_test”

        android:layout_below=”@id/iv”

        />

    <TextView

        android:id=”@+id/user”

        android:layout_width=”wrap_content”

        android:layout_height=”wrap_content”

        android:background=”@drawable/face”

        android:layout_below=”@id/tvjs”

        />

    <TextView

        android:id=”@+id/usernsme”

        android:layout_width=”wrap_content”

        android:layout_height=”wrap_content”

        android:text=”username”

        android:textSize=”20sp”

        android:layout_below=”@id/tvjs”

        android:layout_toRightOf=”@id/user”

        android:layout_marginLeft=”5dp”

        />

</RelativeLayout>

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

作者

留言

撰写回覆或留言

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