【问题标题】:Change dynamically items in a listView动态更改列表视图中的项目
【发布时间】:2010-09-23 20:25:27
【问题描述】:

我正在使用自定义 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;

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

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

【问题讨论】:

    标签: android listview android-listview android-alertdialog


    【解决方案1】:

    由于没有人回答问题并且我找到了解决方案,我将在此处发布它以帮助最终可能面临相同或类似问题的其他人:D

    我只是从每个案例中删除 TextView subTitulo = (TextView) findViewById(R.id.subTitulo); 并在切换开始之前添加它,但在 onClick 函数上“获取”视图参数(最终类型,是因为 Eclipse 警告过我:P):final TextView subTitulo = (TextView) view.findViewById(R.id.subTitulo);

    代码如下:

     listview.setOnItemClickListener(new OnItemClickListener() {
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
    TextView subTitulo = (TextView) view.findViewById(R.id.subTitulo);
    
                  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) {
    
                                    subTitulo.setText(alertText1[item]);
                                }
                            });
                            ventana.show();
                                break;
    
    
    [...]
    

    【讨论】:

    • 真正的答案是使用更好的适配器来填充列表,然后在点击时更新适配器。
    • 你能再解释一下吗?在此代码中,listView 已被填充。 “ventana”被定义为一个 AlertDialog.Builder,问题是关于根据 alertDialog 选择更改 listView 内容。也许你能告诉我一些关于这个适配器的事情? :D
    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 2015-12-18
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多