android - 动态更改 ListView 中的项目

标签 android listview android-listview android-alertdialog

我使用的是带有TitleSubtitle 的自定义ListView,您可以在其中阅读该项目的简要说明。

对于列表中的每个项目,我都显示一个 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 中进行选择时, 所选选项将替换第一项的副标题!

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

最佳答案

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

我只是从每个案例中删除 TextView subTitulo = (TextView) findViewById(R.id.subTitulo); 并在切换开始之前添加它,但在 onClick 函数上“获取” View 参数(最终类型,是因为 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;


[...]

关于android - 动态更改 ListView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3782279/

相关文章:

android - 重新签署 Android Apk

android - 从 Android ListView/ArrayAdapter 中删除项目在文本过滤后不起作用

java - Android ListView 只显示最新的项目

android - ListView:每一行与不同的网络服务相关联

java - 使用 SQlite 数据库在自定义基础适配器 ListView 中存储复选框状态

android - 在 ViewPager 中同步 fragment 滚动

android - canvas.drawLine() 没有出现在位图上

android - 具体的安卓处理器细节

android - 如何在 Android 中单击 ListView 行时使 ImageView 可见和不可见?

android - 根据其中的多行 TextView 动态设置 ListView 高度