【问题标题】:Shuffle ArrayList随机播放数组列表
【发布时间】:2018-11-19 18:46:19
【问题描述】:

我有两个RecyclerView 和一个ArrayList 称为collections,我正在尝试改组这个ArrayList 并获得12 项。

@Override
protected void onPostExecute(List<CollectionsModel> collections) {
    super.onPostExecute(collections);
    if (isAdded() && getActivity() != null) {
        setAdapterForRecyclerView(collections);
         setAdapterForRecyclerViewBestCollections(shuffleCollection(collections));
    }
}

洗牌方法:

public List<CollectionsModel> shuffleCollection(List<CollectionsModel> collectionsModelList) {
    java.util.Collections.shuffle(collectionsModelList);
    return collectionsModelList;
}

RecyclerView 1 的适配器方法:

private void setAdapterForRecyclerViewBestCollections(List<CollectionsModel> collectionHelper) {
    for (int i = 0; i < 12; i++) {
        arrayListCollections.add(collectionHelper.get(i));
    }
    /*rest of code*/
}

RecyclerView 2 的适配器方法:

private void setAdapterForRecyclerView(final List<CollectionsModel> wlls) {
    if (myAdapter == null) {
        myAdapter = new MyAdapterCollection(wlls, getActivity(), new RecyclerViewClickListener() {
            @Override
            public void onClick(View view, Wallpaper wallpaper) {

            }

            @Override
            public void onClick(View view, CollectionsModel collectionsModel) {

            }
        }, R.layout.collection_item);
        recyclerView.setAdapter(myAdapter);
    } else {
        int position = myAdapter.getItemCount();
        myAdapter.getItems().addAll(wlls);
        myAdapter.notifyItemRangeInserted(position, position);
    }
}

我的问题:

当我运行应用程序时,我看到 RecyclerView 1 和 RecyclerView 2 都是随机的(顺序相同)。

我想要什么:

我想查看RecyclerView 1 中的随机物品顺序和RecyclerView 2 中的正常顺序

【问题讨论】:

    标签: java android collections android-recyclerview shuffle


    【解决方案1】:

    首先您将列表对象传递给setAdapterForRecyclerView(collections);

    之后,您将相同的列表对象传递给setAdapterForRecyclerViewBestCollections(shuffleCollection(collections));

    然后洗牌对象(在这两种方法中,您都使用相同的对象,洗牌将反映到RecyclerView1RecyclerView2

    创建新的List 对象并在洗牌后将其返回,这样您将在RecyclerView1RecyclerView2 中看到两个不同的顺序

    public List<CollectionsModel> shuffleCollection(List<CollectionsModel> collectionsModelList) {
        List<CollectionsModel> shuff = new ArrayList<>(collectionsModelList);
        java.util.Collections.shuffle(shuff);
        return shuff;
    }
    

    【讨论】:

      猜你喜欢
      • 2023-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多