32.RecyclerView的使用
1.下载素材。
本节素材源码,请在公众号回复" AS1217 "。
2.新建layout_item.xml,作为RecyclerView的列表项。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
3.新建User。
public class User {
private String name;
private String gender;
public String getName() {
return name;
}
public String getGender() {
return gender;
}
public User(String name, String gender) {
this.name = name;
this.gender = gender;
}
}
4.新建UserAdapter。
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
private List<User> users;
public UserAdapter(List<User> users) {
this.users = users;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_item, parent, false);
final ViewHolder viewHolder = new ViewHolder(view);
viewHolder.linerlayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = viewHolder.getAdapterPosition();
Toast.makeText(parent.getContext(), "你点击了索引为"+position+"的项。====》"+users.get(position).getName()+"--"+users.get(position).getGender(), Toast.LENGTH_SHORT).show();
}
});
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
User user = users.get(position);
holder.text1.setText(user.getName());
holder.text2.setText(user.getGender());
}
@Override
public int getItemCount() {
return users.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
View linerlayout;
TextView text1;
TextView text2;
public ViewHolder(@NonNull View itemView) {
super(itemView);
linerlayout = itemView;
text1 = itemView.findViewById(R.id.text1);
text2 = itemView.findViewById(R.id.text2);
}
}
}
5.修改MainActivity。
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private List<User> users = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.rv_view);
init();
// LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
// linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
// linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
// recyclerView.setLayoutManager(linearLayoutManager);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this,3);
recyclerView.setLayoutManager(gridLayoutManager);
UserAdapter adapter = new UserAdapter(users);
recyclerView.setAdapter(adapter);
}
private void init() {
for (int i = 0; i < 30; i++) {
users.add(new User("小姓名", "男"));
}
}
}
6.新建activity_main.xml。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>