Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Làm việc với RecyclerView cơ bản trong Android

Tổng quan

RecyclerView là phiên bản nâng cấp của ListView, hoạt động dựa trên ViewHolder pattern. Hỗ trợ hiển thị cả danh sách (list) và lưới (grid).

Ví dụ cơ bản nhất: xây dựng app danh sách sinh viên (tên, tuổi) với RecyclerView đơn giản.

Các bước

Bước 1-2: Tạo project & thêm dependency recyclerview-v7

Bước 3: activity_main.xml

<RelativeLayout ...>
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical" />
</RelativeLayout>

Bước 4: MainActivity.java

public class MainActivity extends AppCompatActivity {
    private RecyclerView recyclerView;
    private StudentAdapter studentAdapter;
    private List<StudentData> studentDataList = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        recyclerView = findViewById(R.id.recycler_view);
        studentAdapter = new StudentAdapter(studentDataList);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
        recyclerView.setAdapter(studentAdapter);
        prepareStudentData();
    }

    private void prepareStudentData() {
        studentDataList.add(new StudentData("Sai", 25));
        studentDataList.add(new StudentData("Sai", 25));
        studentDataList.add(new StudentData("Raghu", 20));
        studentDataList.add(new StudentData("Raj", 28));
        studentDataList.add(new StudentData("Amar", 15));
        studentDataList.add(new StudentData("Bapu", 19));
        studentDataList.add(new StudentData("Chandra", 52));
        studentDataList.add(new StudentData("Deraj", 30));
        studentDataList.add(new StudentData("Eshanth", 28));
        // Không sắp xếp trong ví dụ này
    }
}

Bước 5: StudentAdapter.java (cơ bản nhất)

class StudentAdapter extends RecyclerView.Adapter<StudentAdapter.MyViewHolder> {
    private List<StudentData> studentDataList;

    public StudentAdapter(List<StudentData> studentDataList) {
        this.studentDataList = studentDataList;
    }

    @NonNull @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.student_list_row, parent, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
        StudentData data = studentDataList.get(position);
        holder.name.setText(data.name);
        holder.age.setText(String.valueOf(data.age));
    }

    @Override public int getItemCount() { return studentDataList.size(); }

    static class MyViewHolder extends RecyclerView.ViewHolder {
        TextView name, age;
        public MyViewHolder(View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.name);
            age = itemView.findViewById(R.id.age);
        }
    }
}

Bước 6: Layout item (LinearLayout ngang, 2 TextView weight 0.5)

<LinearLayout android:orientation="horizontal" android:weightSum="1" ...>
    <TextView android:id="@+id/name" android:layout_width="0dp" android:layout_weight="0.5" ... />
    <TextView android:id="@+id/age" android:layout_width="0dp" android:layout_weight="0.5" ... />
</LinearLayout>

Bước 7: StudentData.java

class StudentData {
    String name; int age;
    public StudentData(String name, int age) { this.name=name; this.age=age; }
}

Kết quả

Màn hình danh sách cơ bản có đường phân cách:

Làm việc với RecyclerView cơ bản trong Android

Cuộn xuống:

Làm việc với RecyclerView cơ bản trong Android