1 回答

TA貢獻1804條經(jīng)驗 獲得超7個贊
我的理解是,您想以不同的顯示機會隨機顯示 Entidad 列表中的單個 Entidad 對象。
例如:在您的 Entidad 對象上創(chuàng)建一個名為 Priority 的整數(shù)字段。將第一個 Entidad 的優(yōu)先級設(shè)置為 50,第二個 200,第三個 350。創(chuàng)建以下方法以根據(jù)優(yōu)先級隨機選擇。(在創(chuàng)建它們后將 Entidad 對象的引用保存在主活動中。)
編輯:Entidad.java
public class Entidad {
private int imgFoto;
private String titulo;
private String tiempo;
private int ratingBar;
private int colorfondo;
private int priority;
public Entidad(int imgFoto, String titulo, String tiempo, int ratingBar, int colorfondo, int priority) {
this.imgFoto = imgFoto;
this.titulo = titulo;
this.tiempo = tiempo;
this.ratingBar = ratingBar;
this.colorfondo = colorfondo;
this.priority = priority;
}
public int getRatingBar() {
return ratingBar;
}
public int getPriority() {
return priority;
}
public int getImgFoto() {
return imgFoto;
}
public String getTitulo() {
return titulo;
}
public String getTiempo() {
return tiempo;
}
public int getRating() { return ratingBar; }
public int getColorfondo() {
return colorfondo;
}
}
編輯 2:使用 getEntidad()
public class Comida extends AppCompatActivity implements Adaptador.OnRecipeListener {
private RecyclerView recyclerView1;
List<Entidad> listItems;
Adaptador adaptor;
private Entidad entidad1,entidad2,entidad3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comida);
recyclerView1 = findViewById(R.id.lv_1);
LinearLayoutManager layoutManager = new
LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView1.setLayoutManager(layoutManager);
listItems = new ArrayList<>();
//Initialize entidad objects and keep references of them to use in pickEntidad() method
entidad1 = new Entidad(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, R.drawable.color_carnes,50);
entidad2 = new Entidad(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, R.drawable.color_carnes,200);
entidad3 = new Entidad(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, R.drawable.color_carnes,350);
listItems.add(entidad1);
listItems.add(entidad2);
listItems.add(entidad3);
adaptor = new Adaptador(listItems, this);
recyclerView1.setAdapter(adaptador);
adaptor.notifyDataSetChanged();
//Call pickEntidad() to randomly pick one entidad and show on the list
pickEntidad();
}
@Override
public void OnRecipe(int position) {
if (position == 0) {
Intent in = new Intent(this, Solomillo.class);
startActivity(in);
}
}
private void pickEntidad(){
//Generates random int value between 0-350
final int random = new Random().nextInt(351);
//get priorities from your created Entidad objects.
int priority1 = entidad1.getPriority();
int priority2 = entidad2.getPriority();
int priority3 = entidad3.getPriority();
listItems.clear()
//Pick one randomly depending on priority
if(random < priority1){
listItems.add(entidad1)
}else if(random < priority2){
listItems.add(entidad2)
}else if (random <= priority3){
listItems.add(entidad3)
}
//update your adapter
adaptor.notifyDataSetChanged()
}
}
每次您想刷新列表時,調(diào)用此 pickEntidad() 方法。不過,這是一種硬編碼方法,如果您有太多項目并且不知道優(yōu)先級值或范圍,它將毫無用處。您還可以通過生成 0-351 之間的整數(shù)來隨機設(shè)置項目優(yōu)先級。希望我能正確理解你的問題。
另外,不要給變量名加上大寫字母。將您的“適配器”變量更改為“適配器”
添加回答
舉報