RecyclerView là gì
RecyclerView là một View mới trong android giống như ListView nhưng mạnh mẽ hơn rất nhiều.
RecyclerView cho phép chúng ta load dữ liệu nhiều hơn ListView, vuốt mượt hơn, hiệu ứng đẹp hơn và hỗ trợ đa dạng layout của các phần tử trong danh sách.
Code tạo Danh sách bằng RecyclerView
Trước tiên các bạn hãy tạo project như bình thường, xong xuôi chúng ta bắt đầu code…
1: Mở build.gradle import thư viện
compile 'com.android.support:recyclerview-v7:24.2.1'
2: Tạo giao diện XML
- activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerView" android:layout_centerHorizontal="true" android:layout_alignParentTop="true" /> </RelativeLayout>
- item.xml
<?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="wrap_content" android:focusable="true" android:paddingLeft="16dp" android:paddingRight="16dp" android:paddingTop="10dp" android:paddingBottom="10dp" android:clickable="true" android:background="?android:attr/selectableItemBackground" android:orientation="vertical"> <TextView android:id="@+id/title" android:textColor="@color/title" android:textSize="16dp" android:textStyle="bold" android:layout_alignParentTop="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/author" android:layout_below="@id/title" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/price" android:textColor="@color/year" android:layout_width="wrap_content" android:layout_alignParentRight="true" android:layout_height="wrap_content" /> </RelativeLayout>
2. Tạo một model chứa dữ liệu:
Book.java
public class Book { private String title; private String author; private String price; public Book() { } public Book(String title, String author, String price) { this.title = title; this.author = author; this.price = price; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } // Thêm hàm toString() tại đây }
3. Tạo một Adapter để xỷ lý :
- BookAdapter.java
Trong BookAdapter tạo một ViewHolder:
/** Create ViewHolder*/ public class BookViewHolder extends RecyclerView.ViewHolder { private TextView title; private TextView author; private TextView price; public BookViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); author = (TextView) itemView.findViewById(R.id.author); price = (TextView) itemView.findViewById(R.id.price); } }
Tiếp theo implement các method của RecylerView ta có một file đây đủ như sau:
public class BookAdapter extends RecyclerView.Adapter<BookAdapter.BookViewHolder> { private List<Book> bookList; private Activity activity; /**Contructor*/ public BookAdapter(Activity activity,List<Book> bookList) { this.activity = activity; this.bookList = bookList; } /** Create ViewHolder*/ public class BookViewHolder extends RecyclerView.ViewHolder { private TextView title; private TextView author; private TextView price; public BookViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); author = (TextView) itemView.findViewById(R.id.author); price = (TextView) itemView.findViewById(R.id.price); } } @Override public BookViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { /** Get layout */ View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item,parent,false); return new BookViewHolder(view); } @Override public void onBindViewHolder(BookViewHolder holder, int position) { /** Set Value*/ Book book = bookList.get(position); holder.title.setText(book.getTitle()); holder.author.setText(book.getAuthor()); holder.price.setText(book.getPrice()); /*Sự kiện click vào item*/ holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(activity, book.toString();, Toast.LENGTH_SHORT).show(); } }); } @Override public int getItemCount() { return bookList.size(); } }
4. Cài đặt tại MainActivity.java
public class MainActivity extends AppCompatActivity { private List<Book> bookList; private RecyclerView recyclerView; private BookAdapter bookAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addControl(); addEvent(); } private void addControl() { recyclerView = (RecyclerView) findViewById(R.id.recyclerView); bookList = new ArrayList<>(); bookAdapter = new BookAdapter(this,bookList); RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); recyclerView.setLayoutManager(mLayoutManager); recyclerView.setAdapter(bookAdapter); } private void addEvent() { /** Call method add data*/ createData(); } /** Add data to bookList*/ public void createData() { Book book = new Book("Kỳ Án Ánh Trăng","Xác treo trong nhà gỗ","100.000"); bookList.add(book); book = new Book("Tuyết Đoạt Hồn","Qủy Cổ Nữ","100.000"); bookList.add(book); book = new Book("Tơ Đòng Rỏ Máu","Xác treo trong nhà gỗ","100.000"); bookList.add(book); book = new Book("Hồ Tuyệt Mệnh","Qủy Cổ Nữ","100.000"); bookList.add(book); book = new Book("Nỗi Đau Của Đom Đóm","Qủy Cổ Nữ","100.000"); bookList.add(book); bookAdapter.notifyDataSetChanged(); } }
Vậy là đã xong tiến hành Run project, Chúc các bạn thành công!
Bình luận đã bị khoá.