RecyclerView es un ViewGroup agregado al estudio de Android como sucesor de GridView y ListView. Es una mejora en ambos y se puede encontrar en los últimos paquetes de soporte v-7. Ha sido creado para hacer posible la construcción de cualquier lista con diseños XML como un elemento que se puede personalizar enormemente mientras se mejora la eficiencia de ListViews y GridViews . Esta mejora se consigue reciclando las vistas que quedan fuera de la visibilidad del usuario. Por ejemplo, si un usuario se desplazó hacia abajo hasta una posición en la que se ven los elementos 4 y 5; los elementos 1, 2 y 3 se borrarían de la memoria para reducir el consumo de memoria.
Implementación : para implementar un RecyclerView básico, se deben construir tres subpartes que ofrezcan a los usuarios el grado de control que necesitan para hacer los diferentes diseños de su elección.
exam_card.xml
<!-- XML Code illustrating card layout usage. --> <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="105dp"> <TextView android:layout_width="200dp" android:id="@+id/examName" android:textSize="16sp" android:layout_marginStart="20dp" android:text="First Exam" android:textColor="@color/black" android:layout_marginEnd="20dp" android:maxLines="1" android:layout_marginTop="15dp" android:layout_height="wrap_content"/> <ImageView android:id="@+id/examPic" android:layout_width="20dp" android:layout_height="20dp" android:layout_below="@+id/examName" android:tint="#808080" android:layout_marginStart="20dp" android:layout_marginTop="7dp" app:srcCompat="@drawable/baseline_schedule_black_36dp"/> <TextView android:id="@+id/examDate" android:layout_toEndOf="@+id/examPic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/examName" android:layout_marginTop="5dp" android:layout_marginEnd="20dp" android:layout_marginStart="10dp" android:gravity="center" android:text="May 23, 2015" android:textSize="16sp"/> <ImageView android:id="@+id/examPic2" android:layout_width="20dp" android:layout_height="20dp" android:layout_below="@+id/examDate" android:tint="#808080" android:layout_marginStart="20dp" android:layout_marginTop="7dp" app:srcCompat="@drawable/baseline_school_black_36dp"/> <TextView android:id="@+id/examMessage" android:layout_toEndOf="@+id/examPic2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/examDate" android:layout_marginEnd="20dp" android:layout_marginTop="5dp" android:layout_marginStart="10dp" android:gravity="center" android:text="Best Of Luck" android:textSize="16sp"/> <TextView android:id="@+id/border2" android:layout_width="match_parent" android:layout_height="1dp" android:layout_marginStart="15dp" android:layout_marginEnd="15dp" android:layout_alignParentBottom="true" android:background="#808080"/> </RelativeLayout>
examViewHolder.java
// ViewHolder code for RecyclerView package com.example.admin.example; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.TextView; public class examViewHolder extends RecyclerView.ViewHolder { TextView examName; TextView examMessage; TextView examDate; View view; examViewHolder(View itemView) { super(itemView); examName = (TextView)itemView .findViewById(R.id.examName); examDate = (TextView)itemView .findViewById(R.id.examDate); examMessage = (TextView)itemView .findViewById(R.id.examMessage); view = itemView } }
examData.java
package com.prodigieux.admin.prodigieux; public class examData { String name; String date; String message; examData(String name, String date, String message) { this.name = name; this.date = date; this.message = message; } }
exam.java
package com.example.admin.example; import android.content.Context; import android.content.Intent; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.prolificinteractive .materialcalendarview .MaterialCalendarView; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class exam extends AppCompatActivity implements NavigationView .OnNavigationItemSelectedListener { ImageGalleryAdapter2 adapter; RecyclerView recyclerView; ClickListiner listiner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_exam); Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitle(""); setSupportActionBar(toolbar); List<examData> list = new ArrayList<>(); list = getData(); recyclerView = (RecyclerView)findViewById( R.id.recyclerView); listiner = new ClickListiner() { @Override public void click(int index){ Toast.makeTexT(this,"clicked item index is "+index,Toast.LENGTH_LONG).show(); } }; adapter = new ImageGalleryAdapter2( list, getApplication(),listiner); recyclerView.setAdapter(adapter); recyclerView.setLayoutManager( new LinearLayoutManager(exam.this)); } @Override public void onBackPressed() { super.onBackPressed(); } // Sample data for RecyclerView private List<examData> getData() { List<examData> list = new ArrayList<>(); list.add(new examData("First Exam", "May 23, 2015", "Best Of Luck")); list.add(new examData("Second Exam", "June 09, 2015", "b of l")); list.add(new examData("My Test Exam", "April 27, 2017", "This is testing exam ..")); return list; } }
activity_exam.xml
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="56dp" android:background="#FFFFFF" tools:context=".exam" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <android.support.v7.widget.RecyclerView android:nestedScrollingEnabled="false" android:id="@+id/recyclerView" android:layout_width="match_parent" android:overScrollMode="never" android:layout_height="wrap_content"/> </LinearLayout> </ScrollView>
¿Escribir código en un comentario? Utilice ide.geeksforgeeks.org , genere un enlace y compártalo aquí.
Publicación traducida automáticamente
Artículo escrito por BaibhavOjha y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA