设置依赖build.gradle
implementation 'androidx.recyclerview:recyclerview:1.0.0'
user_select_list.xml
<androidx.recyclerview.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/user_list_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent">
</androidx.recyclerview.widget.RecyclerView>
user_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="64dp"
android:orientation="horizontal"
android:padding="8dp">
<ImageView
android:id="@+id/portrait"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:scaleType="center"
android:src="@drawable/user_male_48" />
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:gravity="center"
android:padding="8dp"
android:text="@string/user_name" />
</LinearLayout>
对于ViewHolder和Adapter的设置,这里采用的是内部类的方式
ViewHolder
private class UsersHolder extends RecyclerView.ViewHolder {
private User mUser;
private TextView mUserName;
private ImageView mPortrait;
public UsersHolder(@NonNull View itemView) {
super(itemView);
mUserName = (TextView) itemView.findViewById(R.id.user_name);
mPortrait = (ImageView) itemView.findViewById(R.id.portrait);
}
public void bind(User user) {
mUser = user;
mUserName.setText(mUser.getmUser());
mPortrait.setImageResource(mUser.getmPortraitId());
}
}
Adapter
private class UsersAdapter extends RecyclerView.Adapter<UsersHolder> {
private List<User> mUsers;
//传入数据源
public UsersAdapter(List<User> users) {
mUsers = users;
}
@NonNull
@Override
public UsersHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_item, parent, false);
return new UsersHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull UsersHolder holder, int position) {
User user = mUsers.get(position);
holder.bind(user);
}
@Override
public int getItemCount() {
return mUsers.size();
}
}
主程序Activity设置
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.user_list_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
UsersAdapter adapter = new UsersAdapter(data);
recyclerView.setAdapter(adapter);