动态更改listView中的项目

时间:2010-09-23 20:25:27

标签: android listview android-listview alertdialog

我正在使用自定义ListViewTitleSubtitle,您可以在其中阅读该项目的简要说明。

对于列表中的每个项目,我显示AlertDialog以选择一个选项(每种情况都不同)。选择该选项后,我想更改用户选择的选项的字幕。

这是我尝试过的:

listview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        switch(position){
        case 0: 
        final CharSequence[] alertText1 = {"Area 1", "Area 2", "Area 3"};
        ventana.setTitle("Choose an Area");
        ventana.setItems(alertText1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                  TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
                  subTitulo.setText(alertText1[item]);
            }
        });
        ventana.show();
        break;

    case 1: 
        final CharSequence[] alertText2 = {"1", "2", "3", "5", "10", "20", "60"};
        ventana.setTitle("Max. duration");
        ventana.setItems(alertText2, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
                subTitulo.setText(alertText2[item]);
            }
        });
        ventana.show();
        break;

    case 2: 
        final CharSequence[] alertText3 = {"3", "5", "10", "20", "30", "60"};
        ventana.setTitle("Time between events");
        ventana.setItems(alertText3, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
                subTitulo.setText(alertText3[item]);
            }
        });
        ventana.show();
        break;

对于列表中的第一个项目,它可以正常工作,当我选择一个选项时,字幕会被该选项替换,但是当我在其他2个项目的AlertDialog中进行选择时,该选项选中替换第一个项目的副标题!

我知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

由于没有人回答这个问题,我找到了解决方案,我会在这里发布,以帮助其他最终可能遇到同样问题的人:D

我只是从每个案例中删除TextView subTitulo = (TextView) findViewById(R.id.subTitulo);并在交换机启动之前添加它,但在onClick函数上“获取”视图参数(类型final,因为Eclipse警告我:P):{ {1}}

代码如下所示:

final TextView subTitulo = (TextView) view.findViewById(R.id.subTitulo);