Custom Dòng Dữ Liệu Của Recyclerview Trong Android

Xin chào chúng ta, với nhiều người học tập xây dựng app android cứng cáp rất gần gũi gì với ListView, một UI Widget cung cấp trong Việc hiển thị danh sách,... Tuy nhiên còn tồn tại một UI Widget không giống tương tự ListView nhưng chuyển động linh hoạt với mạnh bạo hơn. Đó đó là RecycleView. Nó rất có thể làm cho được những gì? Vì vậy, bây giờ bản thân đang khuyên bảo chúng ta bí quyết thực hiện RecyclerView

B1: Tạo project

chúng ta bắt buộc chế tạo ra một project với tên RecycleViewDemo. (bản thân dùng android studio)

*

B2: Thêm dependency vào tệp tin build.gradle

Các bạn có tác dụng nhỏng sau: kích loài chuột nên vào tiện ích -> lựa chọn xuất hiện Module Settings, đưa lịch sự tab Dependency

*
tiếp sau kích vào vệt + màu xanh lá cây bên tay cần, lựa chọn library dependency, search cùng với từ khóa RecycleView, các bạn chọn nlỗi trong hình với kích OK
*
soát sổ lại file build.gradle
*
chụ ý: bắt buộc sửa lại phiên bạn dạng mang đến giống cùng với com.game android.support:appcompat-v7:25.3.1 hoặc có thể nắm bởi compile "com.app android.support:recyclerview-v7:21.0.+"

B3: chế tác RecyclerView trong file xml

B4: chế tạo tệp tin sản phẩm.xml cho mỗi phần tử

B5: tạo nên Adapter đến RecyclerView

package com.example.haitm.recyclerviewdemo;import apk.tư vấn.v7.widget.RecyclerView;import android.view.LayoutInflater;import app android.view.View;import android.view.ViewGroup;import game android.widget.TextView;import java.util.ArrayList;import java.util.List;public class RecyclerViewAdapter extends RecyclerView.Adapter private List data = new ArrayList(); public RecyclerViewAdapter(List data) this.data = data;

Bạn đang xem: Custom dòng dữ liệu của recyclerview trong android

Override public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) LayoutInflater inflater = LayoutInflater.from(parent.getContext()); View view = inflater.inflate(R.layout.sản phẩm, parent, false); return new RecyclerViewHolder(view);
Override public void onBindViewHolder(RecyclerViewHolder holder, int position) holder.txtUserName.setText(data.get(position));
Override public int getItemCount() return data.size(); public class RecyclerViewHolder extends RecyclerView.ViewHolder TextView txtUserName; public RecyclerViewHolder(View itemView) super(itemView); txtUserName = (TextView) itemView.findViewById(R.id.user_name); File item.xml của bản thân chỉ khai báo một TextView (phần tử của RecyclerView chỉ là 1 trong những string) bắt buộc mình knhì báo private List data = new ArrayList();. data sẽ lưu trữ toàn thể dữ liệu

Trong class RecyclerViewAdapter, bạn phải khai báo một class RecyclerViewHolder, class này góp kiểm soát và điều hành các view giỏi hơn, tránh Việc findViewById những lần, trong file công trình.xml chúng ta knhì báo bao nhiêu view thì ở đây phải có đầy đủ.

Trong cách thức onCreateViewHolder, View view = inflater.inflate(R.layout.item, parent, false); dùng để gán hình ảnh mang đến 1 phần tử của RecyclerView

Pmùi hương thức getItemCount() trả về số lượng phần tử

Pmùi hương thức onBindViewHolder dùng để gán tài liệu từ bỏ listData vào viewHolder

B6: Gán adapter vào RecyclerView

Trong MainActivity.java, chúng ta knhì báo Adapter

package com.example.haitm.recyclerviewdemo;import android.os.Bundle;import android.tư vấn.v7.tiện ích.AppCompatActivity;import game android.tư vấn.v7.widget.LinearLayoutManager;import android.tư vấn.v7.widget.RecyclerView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity RecyclerView mRecyclerView; RecyclerViewAdapter mRcvAdapter; List data;
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view); data = new ArrayList(); data.add("Nguyễn Minch Hưng"); data.add("Hoàng Minch Lợi"); data.add("Nguyễn Duy Bảo"); data.add("Nguyễn Ngọc Doanh"); data.add("Nguyễn Phạm Thế Hà"); data.add("Trần Anh Đức"); data.add("Trần Minch Hải"); mRcvAdapter = new RecyclerViewAdapter(data); LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext()); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); mRecyclerView.setLayoutManager(layoutManager); mRecyclerView.setAdapter(mRcvAdapter); Các chúng ta cũng có thể thiết lập tđắm đuối số truyền vào vào hàm setOrientation nhằm list hiển thị theo theo hướng dọc hoặc ngang

KẾT QUẢ

*

B7: Bắt sự kiện Khi cliông xã vào công trình của RecyclerView

Để bắt sự kiện khi kích vào thành công của RecyclerView, trước tiên chúng ta thêm id mang đến LinearLayout vào thành quả.xml android:id="

Xem thêm: Hướng Dẫn Cách Làm Cám Họa Mi Của Người Trung Quốc, Hướng Dẫn Chế Biến Cám Tổng Hợp Cho Chim Họa Mi

+id/line". Mục đích đó là bắt sự khiếu nại Khi kích vào LinearLayout

Tiếp theo trong RecyclerViewAdapter sửa như sau

package com.example.haitm.recyclerviewdemo;import android.content.Context;import game android.tư vấn.v4.content.ContextCompat;import android.tư vấn.v7.widget.RecyclerView;import apk.view.LayoutInflater;import android.view.View;import game android.view.ViewGroup;import apk.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class RecyclerViewAdapter extends RecyclerView.Adapter private Context mContext; private List data = new ArrayList(); public RecyclerViewAdapter(Context mContext, List data) this.mContext = mContext; this.data = data;
Override public RecyclerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) // Giữ nguyên ổn
Override public void onBindViewHolder(final RecyclerViewHolder holder, int position) holder.txtUserName.setText(data.get(position)); // bắt sự kiện Lúc kích vào LinearLayout holder.line.setOnClickListener(new View.OnClickListener()
Override public void onClick(View v) holder.line.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorAccent)); if (onItemClickedListener != null) onItemClickedListener.onItemClick(holder.txtUserName.getText().toString()); );
Override public int getItemCount() return data.size(); public class RecyclerViewHolder extends RecyclerView.ViewHolder TextView txtUserName; LinearLayout line; public RecyclerViewHolder(View itemView) super(itemView); txtUserName = (TextView) itemView.findViewById(R.id.user_name); line = (LinearLayout) itemView.findViewById(R.id.line); public interface OnItemClickedListener void onItemClick(String username); private OnItemClickedListener onItemClickedListener; public void setOnItemClickedListener(OnItemClickedListener onItemClickedListener) this.onItemClickedListener = onItemClickedListener; Bên MainActivity.java thêm đoạn code sau nhằm rất có thể rước được dữ liệu tự mặt Adapter (thực tế là 1 trong lời Call callBack)

mRcvAdapter.setOnItemClickedListener(new RecyclerViewAdapter.OnItemClickedListener()
Override public void onItemClick(String username) Toast.makeText(MainActivity.this, username, Toast.LENGTH_SHORT).show(); );

Kết quả

*