当前位置: 首页 > 知识库问答 >
问题:

RecyclerView未迭代布局[duplicate]

梁修贤
2023-03-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);

        }
    }
}

共有1个答案

袁英豪
2023-03-14

你的代码看起来很好。layout_home中很可能存在一个问题。确保android:layout_height设置为wrap_content

此外,您可以实现一个自定义对象arraylist,而不是创建三个单独的对象。自定义对象将保存每个项的属性。但是,这是一个建议,我不认为这是您面临的bug的原因。

 类似资料:
  • 我一直在stackoverflow和这篇博文上阅读不同的答案,并试图实现它们的解决方案,但我仍然得到错误: 片段中的布局: 和项目的布局: 我做错了什么? 编辑:以下是适配器:

  • 我制作了一个基本的购物清单应用程序,它利用回收器视图来显示列表项目。我正在尝试使用带有片段的导航添加设置屏幕。我遇到了我的回收器视图的问题 主活动.kt HomeFragment.kt 设置Fragment.kt activity_main.xml fragment\u home.xml navigation.xml 不确定是否需要更多信息。提前道歉-我是android studio的新手

  • 我正在使用一个片段来查看一个RecyclerView。但我总是犯这个错误 E/RecyclerView:未附加适配器;跳过布局 我已经为我的recyclerview创建了一个适配器,但布局没有显示。php后端运行良好。谁能帮帮我。下面是我的片段和适配器代码 Tips.java TipAdapter.java

  • 我已经提到了相当少的帖子关于这个错误,但没有一个能够解决我的问题。我有一个片断,在这里我使用修改获得了我的值,我已经在下面显示了: 下面是我的RecyclerView适配器类:

  • 我正在开发一个天气应用程序,我想在其中使用中的两个,它的成员是。我想使用一个来显示今天的天气,另一个视图来显示其他日子的天气。如果我只使用一个来显示天气,我的就可以正常工作。我还覆盖了视图`type I应该充气。 的代码: 我已覆盖的的的代码: 无论中的的值是什么,函数总是返回。 有人能告诉我我做错了什么吗?

  • 当应用程序启动时,我得到一个空白屏幕,当我检查日志时,我得到:E/回收人员视图:没有连接适配器;跳过布局错误 我不知道为什么?任何想法,它似乎没有附加回收器视图或添加任何数据,我附加了Main活动、DataAdapter和数据类。 主要活动 数据适配器 下面是我的数据类,将从中提取数据 我ncluded.java 收集器和设置器 这是jsonResponse类,在接口中引用 感谢任何帮助。