将正确的信息传递给Dialog

时间:2011-07-05 10:25:29

标签: android dialog

我正在考虑使用Dialog创建bundle of data。一切正常。 点击后我有一些buttons打开带有数据的dialog,然后可以更新。

我遇到的麻烦是我按下捆绑包的哪个按钮只是最后一行的数据无关紧要。有关获取正确数据的任何想法都会传递给Dialog每个按钮。

我正在考虑为每个视图设置一个ID,因为我通过循环但不确定如何再次调用

代码:

for (int i = 0; i < nameInfo.size(); i++) {
            // creating the views
            View viewItem = (View) inflater.inflate(R.layout.view_item, null);
            nameView = (TextView) viewItem.findViewById(R.id.title);
            nameView.setId(i);
            value1View = (TextView) viewItem.findViewById(R.id.value1);
            value1View.setId(i);
            value2View = (TextView) viewItem.findViewById(R.id.value2);
            value2View.setId(i);

            updateButton = (Button) sightmarkView.findViewById(R.id.updatebutton);
            updateButton.setId(i);
            // Getting the values
            nameValue = nameInfo.get(i).toString();
            value1 = db.getvalue1('1', nameInfo.get(i).toString());
            value2 = db.getvalue2('2', nameInfo.get(i).toString());
            // update fields
            nameView.setText(nameValue);
            value1View.setText(String.valueOf(value1));
            value2View.setText(String.valueOf(value2));

            updateButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {


                    int updateButtonId = updateButton.getId();

                                bundle = new Bundle();
                                bundle.putString("name", nameValue);
                            bundle.putFloat("value1", value1);
                                bundle.putFloat("value2", value2);

                                showDialog(SIGHTMARK_DIALOG_ID, bundle);

                }
            });
        pMainlayout.addView(viewItem);
}

感谢您的时间

1 个答案:

答案 0 :(得分:0)

在每个循环中(来自for),您要重新定义nameValuevalue1value2的值。

要解决此问题,只需更改您的代码即可:

// Getting the values
final String nameValue = nameInfo.get(i).toString();
final String value1 = db.getvalue1('1', nameInfo.get(i).toString());
final String value2 = db.getvalue2('2', nameInfo.get(i).toString());