从arraylist firebase获取随机对象

Posted

技术标签:

【中文标题】从arraylist firebase获取随机对象【英文标题】:Get random object from arraylist firebase 【发布时间】:2021-07-31 18:01:37 【问题描述】:

在 Firebase 中,我需要 Parsing2,其中 1-video、2- 发布日期、3-流派、4-publisher、5-img、6-img2、7-title、8-description、9- developer、10-url链接,11-14 个标签,15 个价格。我需要在随机对象(0,n)中获取title和img

描述获取内容的类

public class Random_game_texture 
String title;
String img;

public  Random_game_texture(String img, String title)
    this.title=title;
    this.img=img;


public void setTitle(String title) 
    this.title = title;


public void setImg(String img) 
    this.img = img;


public String getTitle() 
    return title;


public String getImg() 
    return img;

需要实现从firebase获取数据并做随机方法的随机游戏类

  public class Random_game extends AppCompatActivity implements View.OnClickListener

  Button random_btn, link_btn;
  TextView title;
  ImageView img;
  DatabaseReference myRef;
  ArrayList<Random_game_texture> gamesList;
  Random randomGenerator;


@Override
public void onCreate(Bundle savedInstanceState)
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_random_game);

    ImageButton Home = (ImageButton) findViewById(R.id.home);
    Home.setOnClickListener(this);
    ImageButton Lupa = (ImageButton) findViewById(R.id.lupa);
    Lupa.setOnClickListener(this);
    ImageButton Calendar = (ImageButton) findViewById(R.id.calendar);
    Calendar.setOnClickListener(this);
    ImageButton Kubik = (ImageButton) findViewById(R.id.kubik);
    Kubik.setOnClickListener(this);
    ImageButton Profile = (ImageButton) findViewById(R.id.profile);
    Profile.setOnClickListener(this);

    random_btn=findViewById(R.id.random_game);
    link_btn=findViewById(R.id.link_page);

    title=findViewById(R.id.name_random);
    img=findViewById(R.id.img_random);

    myRef = FirebaseDatabase.getInstance().getReference();
    gamesList=new ArrayList<>();




    random_btn.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View v) 


        
    );




@Override
public void onClick(View v) 
    switch (v.getId())
        case R.id.home:
            startActivity(new Intent(this, News.class));
            break;
        case R.id.lupa:
            startActivity(new Intent(this, Games.class));
            break;
        case R.id.calendar:
            startActivity(new Intent(this, Calendar.class));
            break;
        case R.id.kubik:
            startActivity(new Intent(this, Random_game.class));
            break;
        case R.id.profile:
            startActivity(new Intent(this, Profile.class));
            break;
    

【问题讨论】:

【参考方案1】:

您的节点已编号,以便更轻松地尝试使用我为您编写的代码。 我的代码说“max”和“min”放置你的第一个和最后一个节点。 也无法从图像中复制和粘贴您的节点名称。希望它对您有用,如果我还不是初学者,请见谅。

random_btn.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
     readNodes();

    
);

//把方法放在onCreate()外面

private void readNodes() 

int range = ("max" - "min") + 1;     
int random (int)(Math.random() * range) + "min"; 
String node = String.valueOf(random);


    DatabaseReference ref = myRef.child("Parsing2").child(node);

        ref.addValueEventListener(new ValueEventListener() 

            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) 

               
                

                String title1 = dataSnapshot.child("title node name").getValue().toString();
                String img1 = dataSnapshot.child("img node name").getValue().toString();

                Random_game_texture randomObject = new Random_game_texture(img1, title1);

                title.setText(randomObject.getTitle());
                img.setText(randomObject.getImg());

            

            @Override
            public void onCancelled(@NonNull DatabaseError error) 


            


        );
    


【讨论】:

我试过了,我不得不稍微改变一下。它适用于标题,但由于某种原因,图像链接显示在控制台中。谢谢。 @SirGery 如果您的代码中没有任何类型的 System.out.print(),则链接不应出现在控制台上

以上是关于从arraylist firebase获取随机对象的主要内容,如果未能解决你的问题,请参考以下文章

Android:使用 ArrayList 从 Firebase 检索对象

java 从Firebase中的Object获取ArrayList

从 Firebase 查询具有在 ArrayList 中找到的子值的对象

在扩展 ArrayList 时从 Firebase 获取价值

java中怎样在一个集合中随机取一个数?

从 Firebase 获取随机用户