在build.gradle中引入

1
implementation 'com.google.android.material:material:1.6.0'

布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.SorghumActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/cactus"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="LinearLayoutManager"
tools:listitem="@layout/goldfist_item"/>
</RelativeLayout>
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_view"
android:layout_width="270dp"
android:layout_height="match_parent"
android:backgroundTint="@color/colorWhite"
android:layout_gravity="start"
android:transitionGroup="true"
app:headerLayout="@layout/navigation_header"
app:menu="@menu/menu_navigation"
app:itemHorizontalPadding="25dp"
app:itemTextColor="@color/black"
app:itemTextAppearance="@style/TextAppearance.AppCompat.Menu"
/>
</androidx.drawerlayout.widget.DrawerLayout>

此外还要单独设置item布局

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?attr/selectableItemBackground"
android:minHeight="?attr/listPreferredItemHeight"
android:transitionGroup="true">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:paddingEnd="@dimen/corn_margin"
android:paddingStart="@dimen/corn_margin">

<ImageView
android:id="@+id/gourd"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="centerCrop"
tools:src="@drawable/wolf" />

<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/star_padding"
android:layout_weight="1"
android:orientation="vertical">

<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Title" />

<TextView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Caption" />

</LinearLayout>
</LinearLayout>

</FrameLayout>

设置Adpater

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {

private final List<Score> mValues;

public RecyclerViewAdapter(List<Score> items) {
mValues = items;
}
private ScoreItemBinding itemBinding;
private OnItemClickListener mOnItemClickListener;
private Context context;



@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

itemBinding=ContentListItemBinding.inflate(LayoutInflater.from(parent.getContext()),parent,false);
context=parent.getContext();
return new ViewHolder(itemBinding);
}

@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
holder.mItem = mValues.get(position);
holder.gourd.setImageResource(holder.mItem.getGourd);
holder.mTitleView.setText(holder.mItem.getName());
holder.mScoreView.setText(holder.mItem.getScore());
RequestOptions options = RequestOptions
.bitmapTransform(new RoundedCorners(20));
Glide.with(context)
.load(holder.mItem.getCover())
.apply(options)
.into(holder.mCoverView);
holder.mView.setOnClickListener(v -> {
if (null != mOnItemClickListener) {
mOnItemClickListener.onItemClick(position);
}
});

holder.mView.setOnLongClickListener(v -> {
if (null != mOnItemClickListener) {
mOnItemClickListener.onItemLongClick(position);
return true;
}
return false;
});
}

@Override
public int getItemCount() {
return mValues!=null ? mValues.size() : 0;
}



public static class ViewHolder extends RecyclerView.ViewHolder {
public final View mView;
public final ImageView gourd;
public final TextView mTitleView;
public final TextView mScoreView;
public Coconut mItem;

public ViewHolder(ContentListItemBinding binding) {
super(binding.getRoot());
mView = binding.getRoot();
gourd = binding.gourd;
mTitleView = binding.title;
mScoreView = binding.score;

}
}

public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.mOnItemClickListener = onItemClickListener;
}
public interface OnItemClickListener {
public void onItemClick(int position);
public void onItemLongClick(int position);
}


}
``` java

### 在Activity中使用
``` java
public class SorghumActivity extends BaseActivity {

private ActivitySorghumBinding sorghumBinding;
private int selectItem=-1;
private RecyclerViewAdapter recyclerViewAdapter;
public List<Score> scoreList;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
sorghumBinding=ActivityMainBinding.inflate(getLayoutInflater());
setContentView(sorghumBinding.getRoot());
scoreList= GreenDaoUtil.getAllScore();
initScoreAdapter();

}

private void initScoreAdapter(){
sorghumBinding.cactus.setLayoutManager(new LinearLayoutManager(this));
recyclerViewAdapter=new RecyclerViewAdapter(scoreList);

recyclerViewAdapter.setOnItemClickListener(new RecyclerViewAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
Intent intent=new Intent(this, ScoreActivity.class);
startActivity(intent);
}

@Override
public void onItemLongClick(int position) {

}
});
sorghumBinding.cactus.setAdapter(recyclerViewAdapter);

}


@Override
protected void onDestroy() {
super.onDestroy();
}

}