洗牌图像

时间:2021-07-15 12:46:48

标签: java android-studio

我无法在壁纸应用程序的主屏幕中随机播放图像。我想当有人打开我的应用程序时,主屏幕中的图像应该被洗牌。我尝试使用 Collections.shuffle() 方法,在使用时发生的是图像被复制,当我点击混洗的图像以全屏打开其他一些图像时

假设在列表 A(0,1,2,3) 中,当我对其进行洗牌时,只有显示会发生变化,但是当我打开它时,它会根据列表 A 的索引打开 请帮助我提供有关在何处以及如何使用 Collections.shuffle 方法的代码 这是我的代码。 困扰了很多天没有得到解决,请帮忙

Homescreen.java

      public class Homescreen extends AppCompatActivity {
      RecyclerView recyclerView;
      List<WallpaperModel> list;
      private WallpaperAdapter adapter;
      DatabaseReference reference;

      public static final String TAG = Homescreen.class.getSimpleName();

      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_homescreen);

      init();

      recyclerView.setHasFixedSize(true);

      recyclerView.setLayoutManager(new GridLayoutManager(this,3));

      list = new ArrayList<>();
      adapter.shuffle();
      adapter.notifyDataSetChanged();
    
      adapter = new WallpaperAdapter(list);
      recyclerView.setAdapter(adapter);

      reference = FirebaseDatabase.getInstance().getReference().child("Wallpapers");

      reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull  DataSnapshot snapshot) {

            list.clear();

            for (DataSnapshot dataSnapshot : snapshot.getChildren()){

                WallpaperModel model = dataSnapshot.getValue(WallpaperModel.class);
                list.add(model);
            }
            adapter.notifyDataSetChanged();
         }

         @Override
         public void onCancelled(@NonNull  DatabaseError error) {

            Log.e(TAG,error.getMessage());

         }
          });

          }

        private void
          init(){
          Toolbar toolbar = findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);

           recyclerView = findViewById(R.id.recyclerView);


           }


           @Override
        public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu,menu);


         return true;
        }
        

          @Override
         public boolean onOptionsItemSelected(@NonNull MenuItem item) {

          int id = item.getItemId();

          if (id == R.id.favourite){
          startActivity(new Intent(Homescreen.this, FavouriteActivity.class));
          }

           return true;
               }
            }

这是我的壁纸适配器类

                     public class WallpaperAdapter extends 
                     RecyclerView.Adapter<WallpaperAdapter.WallpaperHolder> {

                     private static List<WallpaperModel> list;


                    public WallpaperAdapter(List<WallpaperModel> list) {
                    WallpaperAdapter.list = list;
                      }

                    @NonNull
                    @Override
                     public WallpaperHolder onCreateViewHolder(@NonNull  ViewGroup parent, int 
                      viewType) {


                      View view = 
                      LayoutInflater.from(parent.getContext())
                      .inflate(R.layout.wallpaper_items,parent,false);
                      return new WallpaperHolder(view);
                         }

                       @Override
                         public void onBindViewHolder(@NonNull  
                        WallpaperAdapter.WallpaperHolder holder, int position) {

                        Random random = new Random();

                        int color = Color.rgb(0,0,0);

                         Glide.with(holder.itemView.getContext().getApplicationContext())
                         .load(list.get(position).getImage())
                         .timeout(7500)

                         .into(holder.imageView);
                          holder.setClickListener();


                           }

                           @Override
                          public int getItemCount() {
                         return list.size();
                                }

                      public void shuffle() {
                      Collections.shuffle(list,new Random(System.currentTimeMillis()));
                      }

                static class WallpaperHolder extends RecyclerView.ViewHolder{

                 private ImageView imageView;

                 public WallpaperHolder(@NonNull View itemView) {
                 super(itemView);

                  imageView = itemView.findViewById(R.id.imageView);

                  }

                  void setClickListener(){
          //set on click listener on wallpaper image
           itemView.setOnClickListener(new View.OnClickListener() {
              @Override
             public void onClick(View v) {
                int position = getAdapterPosition();
                Intent intent = new Intent(itemView.getContext().getApplicationContext(), 
                 SwiperActivity.class);
                intent.putExtra("position",position);
                itemView.getContext().startActivity(intent);
               }
             });
              }
              }



              }

0 个答案:

没有答案