第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使 recyclerview 根據(jù)百分比只顯示一個數(shù)組?

如何使 recyclerview 根據(jù)百分比只顯示一個數(shù)組?

小唯快跑啊 2023-05-17 14:29:54
我想要一個 recyclerview 只顯示一個數(shù)組,但在 arraylist 中有更多。必須顯示的那個不能總是相同的,但這將取決于某些百分比。例如:第一個數(shù)組有 20% 的機會,第二個 50% 和第三個 50% 也有。并隨機顯示一個。但是當(dāng)我刷新屏幕時它會改變。我想我應(yīng)該做的是為數(shù)組列表中的每個數(shù)組設(shè)置百分比,但我不知道該怎么做以及下一步該做什么。那是我的java文件。public class Comida extends AppCompatActivity implements Adaptador2.OnRecipeListener {    private RecyclerView recyclerView1;    List<Entidad2> listItems;    Adaptador2 adaptor;    private Entidad2 entidad1,entidad2,entidad3;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                WindowManager.LayoutParams.FLAG_FULLSCREEN);        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<>();        entidad1 = new Entidad2(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, 20);        entidad2 = new Entidad2(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, 50);        entidad3 = new Entidad2(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, 100);        listItems.add(entidad1);        listItems.add(entidad2);        listItems.add(entidad3);        adaptor = new Adaptador2(listItems, this);        recyclerView1.setAdapter(adaptor);        adaptor.notifyDataSetChanged();        pickEntidad();    }    @Override    public void OnRecipe(int priority) {        if (priority == 20) {            Intent in = new Intent(this, Solomillo.class);            startActivity(in);        }        if (priority == 50) {            Intent in = new Intent(this, Entrecot.class);            startActivity(in);        }    }}
查看完整描述

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)先級。希望我能正確理解你的問題。


另外,不要給變量名加上大寫字母。將您的“適配器”變量更改為“適配器”


查看完整回答
反對 回復(fù) 2023-05-17
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號