以下是一个示例代码,演示了如何在Android中使用RecyclerView嵌套RecyclerView,并在滚动到底部时加载更多数据:
首先,在您的项目中添加RecyclerView依赖项。在build.gradle文件的dependencies块中添加以下代码:
implementation 'androidx.recyclerview:recyclerview:1.2.1'
接下来,创建两个布局文件:activity_main.xml和item_layout.xml。
activity_main.xml布局文件如下所示:
item_layout.xml布局文件如下所示:
接下来,创建两个适配器:ParentAdapter和ChildAdapter。ParentAdapter负责管理父RecyclerView,ChildAdapter负责管理子RecyclerView。
ParentAdapter.java代码如下所示:
public class ParentAdapter extends RecyclerView.Adapter {
private List> data;
public ParentAdapter(List> data) {
this.data = data;
}
@NonNull
@Override
public ParentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ParentViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ParentViewHolder holder, int position) {
List childData = data.get(position);
ChildAdapter childAdapter = new ChildAdapter(childData);
holder.childRecyclerView.setAdapter(childAdapter);
}
@Override
public int getItemCount() {
return data.size();
}
static class ParentViewHolder extends RecyclerView.ViewHolder {
RecyclerView childRecyclerView;
ParentViewHolder(@NonNull View itemView) {
super(itemView);
childRecyclerView = itemView.findViewById(R.id.childRecyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(itemView.getContext());
childRecyclerView.setLayoutManager(layoutManager);
}
}
}
ChildAdapter.java代码如下所示:
public class ChildAdapter extends RecyclerView.Adapter {
private List data;
public ChildAdapter(List data) {
this.data = data;
}
@NonNull
@Override
public ChildViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
return new ChildViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ChildViewHolder holder, int position) {
String item = data.get(position);
holder.textView.setText(item);
}
@Override
public int getItemCount() {
return data.size();
}
static class ChildViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ChildViewHolder(@NonNull View itemView) {
super(itemView);
textView = itemView.findViewById(android.R.id.text1);
}
}
}
最后,在MainActivity.java中使用这些适配器来设置父RecyclerView:
public class MainActivity extends AppCompatActivity {
private RecyclerView parentRecyclerView;
private ParentAdapter parentAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
parentRecyclerView = findViewById(R.id.parentRecyclerView);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
parentRecyclerView.setLayoutManager(layoutManager);
List> data = new ArrayList<>();
for (int i = 0; i < 10; i++) {
List childData = new ArrayList<>();
for (int j = 0; j < 5; j++) {
childData.add("Item " + j);
}
data.add(childData);
}
parentAdapter = new ParentAdapter(data);
parentRecyclerView.setAdapter(parent