android - 关于以编程方式添加按钮的单击,不同

  显示原文与译文双语对照的内容

我正在浏览一些主题,但找不到确切答案或者至少无法找到正确答案。 我将会创建一个按钮,并为每个按钮创建一个按钮,每个按钮都应该带有一个 OnClick,这意味着它只为所有按钮创建一个视图,而不是所有按钮。


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个按钮。 在i 中我认为不工作的部分是在按钮上添加按钮,然后发送 nrPrzepisu,这基本上是在数据库中的按钮和正确的行之间添加连接。 在每次循环结束时,我都检查了另一个 Activity,每次都是( i*4 ) +j的最后一个值,我想我应该为每个按钮做不同的视图。

时间: 作者:

将同一对象传递给每个 onClick,然后使用下一个迭代更改该对象。 最后所有的onClicks都具有相同的nrPzepisu对象,它返回的值是本例中最后一个的值。


int nrPrzepisu = (i*4) + j;

这样你就不会把同样的对象传递给所有的onClicks 。

...