【问题标题】:Get random object from arraylist firebase从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;
    }
}}

【问题讨论】:

    标签: java android firebase firebase-realtime-database arraylist


    【解决方案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(),则链接不应出现在控制台上
    猜你喜欢
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多