gpt4 book ai didi

android - 以编程方式添加的按钮的不同点击

转载 作者:行者123 更新时间:2023-11-30 03:09:56 24 4
gpt4 key购买 nike

我正在浏览一些主题,但找不到确切的答案,或者至少找不到正确的答案。代码中发生的事情是我为数据库中的每一行创建一个按钮,每个按钮都应该有一个 OnClick 将我们发送到另一个 Activity 以及一些值(每个按钮应该有不同的值)但最后似乎我的所有按钮都获得了相同的值,这让我认为它只为所有按钮创建了 1 个 View 。

Cursor przepis = bazaUzytkownikow.rawQuery("SELECT * FROM przepisy", null);
int liczba_wierszy = przepis.getCount();
przepis.moveToPosition(0);

for (int i = 0; i < (liczba_wierszy/4)+1; i++) {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 4; j++) {


if((przepis.moveToPosition((i*4)+j)!=false))
{
nrPrzepisu=(i*4)+j;
Button btnTag = new Button(this);
btnTag.setLayoutParams(new LayoutParams(115, 60));
btnTag.setText(przepis.getString(przepis.getColumnIndex("nazwa")));
btnTag.setTextSize(10);
btnTag.setId(j + 1 + (i * 4));


btnTag.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View t) {
// TODO Auto-generated method stub
Intent IdzPrzepis = new Intent(getApplicationContext(), DodajPrzepis.class);
IdzPrzepis.putExtra("ID_uzytkownika", ID_uzytkownika);
IdzPrzepis.putExtra("nr_Przepisu", nrPrzepisu);
startActivity(IdzPrzepis);
}
});
row.addView(btnTag);
}
}

layout.addView(row);
}

为了让代码更清晰 - bazaUzytkownikow 是我的数据库,liczba_wierszy 是我得到的行数。我将光标移到开头,因为它是我想要开始的地方,然后我继续使用 2 个循环“剪切”我的数据。我的目标是 1 行中有 4 个按钮。我认为不起作用的部分是 OnClick 方法,我希望我的按钮切换 Activity 并发送 nrPrzepisu,这基本上是在我的按钮和数据库中的适当行之间添加连接(在其他 Activity 中我想设置文本,从数据库中读取行取决于您单击哪个按钮)。我检查了其他 Activity ,它似乎每次都在读取相同的 nrPrzepisu,这通常等于循环结束时 nrPrzepisu=(i*4)+j 的最后一个值,这让我觉得我需要以某种方式为每个按钮制作不同的 View 。

最佳答案

您将同一个对象传递给每个 onClick,然后在下一次迭代中更改该对象。最后,所有的 onClicks 都有相同的 nrPzepisu 对象,它返回的值就是这个例子中的最后一个值。

int nrPrzepisu = (i*4) + j;

这样您就不会将同一个对象传递给所有的 onClicks。

关于android - 以编程方式添加的按钮的不同点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21144270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com