AndroidRecycleView自定义Item的使用

  • 格式:pdf
  • 大小:295.05 KB
  • 文档页数:4

AndroidRecycleView⾃定义Item的使⽤

⾃定义布局的RecycleView需要⾃⼰实现Adapter,ViewHolder和布局;

⾃定义Adapter继承RecycleView.Adapter,重写getItemCount(),onBindViewHolder()和onCreateViewHolder();

⾃定义ViewHolder继承于RecycleView.ViewHolder;

getItemCount()返回RecycleView中Item的个数,onBindViewHolder()主要实现数据和布局的绑定,onCreateViewHolder()加载布局;效果:

适配器代码:

1 package com.cloud.recycleviewdemo;

2

3 import android.support.annotation.NonNull; 4 import android.support.v7.widget.RecyclerView;

5 import android.view.LayoutInflater;

6 import android.view.View;

7 import android.view.ViewGroup;

8 import android.widget.ImageView;

9 import android.widget.TextView;

10

11 import java.util.List;

12

13 class RecycleViewAdapter extends RecyclerView.Adapter {

14

15 private List mItems;

16

17 RecycleViewAdapter(List items) {

18 mItems = items;

19 }

20

21 @Override

22 public int getItemCount() {

23 return mItems.size();

24 }

25

26 @Override

27 public void onBindViewHolder(@NonNull ItemHolder holder, int position) {

28 //设置Item图⽚

29 holder.image.setImageResource(mItems.get(position).getImageResId());

30 //设置Item⽂字

31 holder.title.setText(mItems.get(position).getTitle());

32 }

33

34 @NonNull

35 @Override

36 public ItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

37 return new ItemHolder(LayoutInflater

38 .from(parent.getContext()).inflate(R.layout.item, parent, false));

39 }

40

41 class ItemHolder extends RecyclerView.ViewHolder {

42

43 ImageView image;

44 TextView title;

45

46 ItemHolder(View item) {

47 super(item);

48 image = item.findViewById(R.id.image_view);

49 title = item.findViewById(R.id.text_title);

50 }

51 }

52 }

Item类:

1 package com.cloud.recycleviewdemo;

2

3 class Item {

4

5 private int mImageResId;

6 private String mTitle;

7

8 Item(int imageResId, String title) {

9 mImageResId = imageResId;

10 mTitle = title;

11 }

12

13 public int getImageResId() {

14 return mImageResId;

15 }

16

17 public void setImageResId(int imageResId) {

18 mImageResId = imageResId;

19 }

20

21 public String getTitle() {

22 return mTitle;

23 }

24

25 public void setTitle(String title) {

26 mTitle = title;

27 }

28 }

MainActivity代码: 1 package com.cloud.recycleviewdemo;

2

3 import android.support.v7.app.AppCompatActivity;

4 import android.os.Bundle;

5 import android.support.v7.widget.DefaultItemAnimator;

6 import android.support.v7.widget.LinearLayoutManager;

7 import android.support.v7.widget.RecyclerView;

8

9 import java.util.ArrayList;

10 import java.util.List;

11

12 public class MainActivity extends AppCompatActivity {

13

14 private RecyclerView mRecyclerView;

15 private LinearLayoutManager mLinearLayoutManager;

16 private RecycleViewAdapter mRecycleViewAdapter;

17

18 private List mData;

19

20 @Override

21 protected void onCreate(Bundle savedInstanceState) {

22 super.onCreate(savedInstanceState);

23 setContentView(R.layout.activity_main);

24

25 bindViews();

26 initData();

27 //初始化线性布局管理器

28 mLinearLayoutManager = new LinearLayoutManager(this);

29 //设置布局管理器

30 mRecyclerView.setLayoutManager(mLinearLayoutManager);

31 mRecyclerView.setItemAnimator(new DefaultItemAnimator());

32 //初始化适配器

33 mRecycleViewAdapter = new RecycleViewAdapter(mData);

34 //设置适配器

35 mRecyclerView.setAdapter(mRecycleViewAdapter);

36 }

37

38 private void bindViews() {

39 mRecyclerView = findViewById(R.id.recycle_view);

40 }

41

42 private void initData() {

43 mData = new ArrayList<>();

44 mData.add(new Item(R.drawable.witcher, "The Witcher 3: Wild Hunt"));

45 mData.add(new Item(R.drawable.recore, "Recore"));

46 mData.add(new Item(R.drawable.origins, "Assassin's Creed Origins"));

47 mData.add(new Item(R.drawable.hunter, "theHunter: Call of the Wild"));

48 }

49 }

Item布局:

1

2

3 xmlns:android="http://schemas.android.com/apk/res/android"

4 xmlns:app="http://schemas.android.com/apk/res-auto"

5 xmlns:tools="http://schemas.android.com/tools"

6 android:orientation="vertical"

7 android:layout_width="match_parent"

8 android:layout_height="wrap_content"

9 android:layout_margin="4dp"

10 android:elevation="2dp"

11 android:background="@drawable/background_item">

12

13

14 android:id="@+id/image_view"

15 android:contentDescription="@null"

16 android:layout_width="0dp"

17 android:layout_height="235dp"

18 android:layout_margin="6dp"

19 tools:src="@drawable/witcher"

20 app:layout_constraintTop_toTopOf="parent"

21 app:layout_constraintStart_toStartOf="parent"

22 app:layout_constraintEnd_toEndOf="parent" />

23

24

25 android:id="@+id/text_title"

26 android:layout_width="wrap_content"

27 android:layout_height="wrap_content"

28 android:textSize="18sp"

29 android:textColor="#000000"

30 android:layout_margin="6dp"

31 android:paddingBottom="4dp"

32 app:layout_constraintTop_toBottomOf="@+id/image_view"