如何使 RecyclerView 适配器在每一行中获取 arraylist 的 3 个项目
How to make a RecyclerView adapter to get 3 items of an arraylist in every row
我需要一些关于 RecyclerView.Adapter 的帮助。我将对象 Dart 的数组列表传递给 recyclerview 适配器,我有一个 simple_list_item.xml,其中有 3 个文本视图(dart1Txt、dart2Txt 和 dart3Txt)。我希望适配器从数组列表中获取值并填充文本视图。例如,我有值 10、20、30、3、5、6,我想这样打印
10 20 30
3 5 6
等等。
我不明白怎么做。这是我的 onBindViewHolder。
onBindViewHolder(RoundsStatsAdapter.ViewHolder holder, int position){
Dart dart = mDarts.get(position);
holder.dart1Textview.setText(String.valueOf(dart.getScore()));
}
更新以获取更多信息:
我有一个 Dart 对象,它有一个字段 dartScore。我发送了一个 Dart 对象的 arrayList,我希望 recyclerview 适配器从 arraylist 中获取前 3 个 Dart,并用 dartScore 填充 3 个文本视图,然后从 arraylist 中获取下一个 3 个 Dart,并在新行中再次填充 3文本视图等等。
谢谢
您可以将飞镖列表拆分为 DartTuple 列表:
private class DartTuple {
Dart dart1, dart2, dart3;
}
或者如果您确信您的列表总是包含 3*x 个项目,您可以像这样简单地更改您的适配器
onBindViewHolder(RoundsStatsAdapter.ViewHolder holder, int position){
position = position * 3; // to use multiple 3 increment
Dart dart1 = mDarts.get(position);
Dart dart2 = mDarts.get(position + 1);
Dart dart3 = mDarts.get(position + 2);
/* your layout
holder.dart1Textview.setText(String.valueOf(dart.getScore()));
*/
}
@Override
public int getItemCount() {
return mDarts.size()/3;
}
我需要一些关于 RecyclerView.Adapter 的帮助。我将对象 Dart 的数组列表传递给 recyclerview 适配器,我有一个 simple_list_item.xml,其中有 3 个文本视图(dart1Txt、dart2Txt 和 dart3Txt)。我希望适配器从数组列表中获取值并填充文本视图。例如,我有值 10、20、30、3、5、6,我想这样打印
10 20 30
3 5 6
等等。
我不明白怎么做。这是我的 onBindViewHolder。
onBindViewHolder(RoundsStatsAdapter.ViewHolder holder, int position){
Dart dart = mDarts.get(position);
holder.dart1Textview.setText(String.valueOf(dart.getScore()));
}
更新以获取更多信息: 我有一个 Dart 对象,它有一个字段 dartScore。我发送了一个 Dart 对象的 arrayList,我希望 recyclerview 适配器从 arraylist 中获取前 3 个 Dart,并用 dartScore 填充 3 个文本视图,然后从 arraylist 中获取下一个 3 个 Dart,并在新行中再次填充 3文本视图等等。
谢谢
您可以将飞镖列表拆分为 DartTuple 列表:
private class DartTuple {
Dart dart1, dart2, dart3;
}
或者如果您确信您的列表总是包含 3*x 个项目,您可以像这样简单地更改您的适配器
onBindViewHolder(RoundsStatsAdapter.ViewHolder holder, int position){
position = position * 3; // to use multiple 3 increment
Dart dart1 = mDarts.get(position);
Dart dart2 = mDarts.get(position + 1);
Dart dart3 = mDarts.get(position + 2);
/* your layout
holder.dart1Textview.setText(String.valueOf(dart.getScore()));
*/
}
@Override
public int getItemCount() {
return mDarts.size()/3;
}