Перемешать ArrayList - PullRequest
       16

Перемешать ArrayList

0 голосов
/ 19 ноября 2018

У меня есть две RecyclerView и одна ArrayList, называемые коллекциями , я пытаюсь перетасовать эту 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

1 Ответ

0 голосов
/ 19 ноября 2018

Сначала вы передаете объект списка setAdapterForRecyclerView(collections);

После этого вы передаете тот же объект списка в setAdapterForRecyclerViewBestCollections(shuffleCollection(collections));

И затем перетасовку объекта (в обоих методах, которые вы используете, один и тот же объект и перетасовка будут отражаться как RecyclerView1, так и RecyclerView2

.

Создайте новый List объект и верните его после перетасовки, чтобы вы увидели два разных порядка в RecyclerView1 и RecyclerView2

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