Динамически изменять элементы в списке - PullRequest
1 голос
/ 24 сентября 2010

Я использую пользовательский ListView с Title и Subtitle, где вы можете прочитать краткое объяснение элемента.

Для каждого элемента в списке, который я отображаю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;

Для первого элемента в спискеэто работает нормально, когда я выбираю опцию, субтитры заменяются этой опцией, но когда я делаю выбор в AlertDialog s из 2 других элементов, выбранная опция заменяет субтитры первого элемента!

Есть идеи, как это исправить?

1 Ответ

4 голосов
/ 25 сентября 2010

Поскольку никто не ответил на вопрос, и я нашел решение, я собираюсь опубликовать его здесь, чтобы помочь другим людям, которые в конечном итоге могут столкнуться с той же или подобной проблемой: D

Я просто удалил TextView subTitulo = (TextView) findViewById(R.id.subTitulo); из каждого случая и добавляет его перед запуском переключателя, но "берет" аргумент представления функции onClick (тип final, потому что 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;


[...]
...