【发布时间】:2019-12-14 10:16:14
【问题描述】:
我正在为我的 android 应用程序创建一个 RecyclerView,其中包含一些具有两组数据的虚拟数据。但是布局没有迭代两次,而是正确显示了第一个数据。
public class HomeScreenFragment extends Fragment {
private ArrayList<String> flags = new ArrayList<>();
private ArrayList<String> leagues = new ArrayList<>();
private ArrayList<String> dates = new ArrayList<>();
private Context context;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initData();
}
private void initData() {
leagues.add("Indian premiere league");
dates.add("03-Dec");
leagues.add("Srilankan Premiere league");
dates.add("04-Dec");
initRecyclerView();
}
private void initRecyclerView() {
RecyclerView recyclerView = getView().findViewById(R.id.homeRecyclerView);
HomeScreenRVAdapter adapter = new HomeScreenRVAdapter(flags,leagues,dates,context);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
}
}
回收站视图
public class HomeScreenRVAdapter extends RecyclerView.Adapter<HomeScreenRVAdapter.ViewHolder> {
private static final String TAG = "HomeScreenRVAdapter";
private String BASE_URL, API_KEY;
private ArrayList<String> flags = new ArrayList<>();
private ArrayList<String> leagues = new ArrayList<>();
private ArrayList<String> dates = new ArrayList<>();
private Context context;
public HomeScreenRVAdapter(ArrayList<String> flags, ArrayList<String> leagues, ArrayList<String> dates, Context context) {
this.flags = flags;
this.leagues = leagues;
this.dates = dates;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_home, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.league.setText(leagues.get(position));
holder.date.setText(dates.get(position));
}
@Override
public int getItemCount() {
return leagues.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// HEADER WIDGETS
ExpansionHeader expansionHeader;
ImageView flag;
TextView league, date;
// LAYOUT WIDGETS
ExpansionLayout expansionLayout;
TextView minutes, local, visitor, localScore, visitorScore;
ImageView favourite;
public ViewHolder(@NonNull View itemView) {
super(itemView);
expansionHeader = itemView.findViewById(R.id.expansionHeader);
flag = itemView.findViewById(R.id.headerFlag);
league = itemView.findViewById(R.id.expansionHeaderLeague);
date = itemView.findViewById(R.id.expansionHeaderDate);
}
}
}
我想让应用在数据到来时迭代布局 (layout_home) 的次数。但它不是迭代的。否则无论如何只迭代扩展布局?
【问题讨论】:
-
您的 recyclerView 和您的适配器未正确实现。而且您不需要将您的旗帜、联赛和日期分成 3 个 ArrayList。您只能在一个 ArrayList 中执行这些操作。
-
@Mak-MakBasaya 您能否详细说明实施问题?如果只是三个不同的数组,那么我认为不会导致这样的错误。
-
这里的问题是布局没有迭代
-
@deluxan 如果你也发布你的布局文件会很有帮助(layout_home)
-
在 layout_home.xml 中从
android:layout_height="match_parent"更改为android:layout_height="wrap_content"后它正在工作
标签: android android-recyclerview