Uso básico de RecyclerView en Android

Recycler es un nuevo diseño de vista circular propuesto por Android después de la versión 5.0, y se ha utilizado comúnmente en nuestro desarrollo. Hoy resumiré RecyclerView. Este artículo es un uso básico de Recycler.

1. Dependencia de RecyclerView

implementation 'com.android.support:recyclerview-v7:28.0.0'

Dependencias en androidx

implementation 'androidx.recyclerview:recyclerview:1.0.0'

Todos eligen según el entorno específico.

2. Métodos comunes de RecyclerView

  • setAdapter: establece el adaptador del elemento de la lista. El adaptador usa RecyclerView.Adapter.
  • setLayoutManager: establece el administrador de diseño del elemento de la lista, incluido el administrador de diseño lineal LinearLayoutManager, el administrador de diseño de cuadrícula GridLayoutManager, el administrador de diseño de cuadrícula en cascada StaggeredGridLayoutManager.
  • addItemDecoration: agregue la línea divisoria del elemento de la lista.
  • removeItemDecoration: elimina la línea divisoria del elemento de la lista.
  • setItemAnimator: establece la animación de adición y eliminación de elementos de la lista. La animación predeterminada es DefaltItemAnimator que viene con el sistema.
  •  addOnItemTouchListener: agregue un detector táctil para los elementos de la lista. Debido a que RecyclerView no implementa la interfaz de clic de los elementos de la lista, los desarrolladores pueden monitorear los gestos del usuario a través del oyente táctil aquí.
  • removeOnItemTouchListener: Elimina el detector táctil para el elemento de la lista.
  • scorllToPosition: desplácese hasta la posición especificada.

3.Métodos relacionados con ReccyclerView.Adapter

<1> Métodos que deben reescribirse para adaptadores personalizados

  • getItemCount: Obtiene el número de elementos de la lista.
  • onCreateViewHolder: crea el titular de la vista de todo el diseño. Los parámetros de entrada incluyen el tipo de vista, y se pueden cargar diferentes diseños de acuerdo con el tipo de vista, para realizar el diseño de la lista encabezada.
  • onBindViewHolder: vincula el titular de la vista de cada elemento.

<2> Método que se puede reescribir o no

  • getItemViewType: devuelve el tipo de vista de cada elemento. Este tipo de vista es utilizado por el método onCreateViewHolder.
  • getItemId: obtiene el número de cada elemento.

<3> Métodos que se pueden llamar directamente

  • notifyItemInserted: notifica al adaptador que se ha insertado un nuevo elemento en la posición especificada.
  • notifyItemRemoved: notifica al adaptador que el elemento original se ha eliminado en la ubicación especificada.
  • notificarItemChanged: notifica al adaptador que el artículo en la posición especificada ha cambiado.
  • notifyDataSetChanged: notifica al adaptador que los datos de la lista completa han cambiado.

4. Ejemplo de uso

Ver diseño activity_main.xml

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

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="none"/>
</LinearLayout>

Diseño de elementos de lista item_recycler.xml

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/iv"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="10dp"
            android:src="@mipmap/aaa" />

        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="10dp"
            android:text="这是一行文字"
            android:textColor="#000000"
            android:textSize="20sp" />
    </LinearLayout>

    <View
        android:id="@+id/view"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"
        android:layout_marginTop="5dp"/>
</LinearLayout>

Adaptador HomeAdapter.java

public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>{

    private Context mContext;

    public HomeAdapter(Context mContext) {
        this.mContext = mContext;
    }

    /**
     * 引入布局
     * @param viewGroup
     * @param i
     * @return
     */
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_recycler,viewGroup,false));
        return holder;
    }

    /**
     * 为控件绑定数据
     * @param myViewHolder
     * @param i
     */
    @Override
    public void onBindViewHolder(MyViewHolder myViewHolder, int i) {
        myViewHolder.tv.setText("这是第"+i+"行");
        if (i%2 == 0){
            myViewHolder.iv.setImageResource(R.mipmap.aaa);
        }else{
            myViewHolder.iv.setImageResource(R.mipmap.bbb);
        }
        if (i == 19){
            myViewHolder.view.setVisibility(View.GONE);
        }else{
            myViewHolder.view.setVisibility(View.VISIBLE);
        }
    }

    /**
     * 返回项个数
     * @return
     */
    @Override
    public int getItemCount() {
        return 20;
    }

    /**
     * 定义控件并初始化
     */
    class MyViewHolder extends RecyclerView.ViewHolder{

        TextView tv;
        ImageView iv;
        View view;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv = itemView.findViewById(R.id.tv);
            iv = itemView.findViewById(R.id.iv);
            view = itemView.findViewById(R.id.view);
        }
    }
}

Utilice la configuración MainActivity.java en la actividad

public class MainActivity extends AppCompatActivity {

    private RecyclerView recycler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        recycler = findViewById(R.id.recycler);
        //设置布局管理器
        recycler.setLayoutManager(new LinearLayoutManager(this));
        //设置item增加和删除时的动画
        recycler.setItemAnimator(new DefaultItemAnimator());
        HomeAdapter mAdapter = new HomeAdapter(this);
        recycler.setAdapter(mAdapter);
    }
}

Este es el más fácil de completar con RecyclerView. Más adelante se presentarán algunos otros métodos de uso.

Supongo que te gusta

Origin blog.csdn.net/weixin_38322371/article/details/114881282
Recomendado
Clasificación