1

アイテムの簡単な説明が読めるaとaのカスタムListViewを使用しています。TitleSubtitle

リストの各項目について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、他の2つのアイテムを選択すると、選択したオプションが最初のアイテムのサブタイトルに置き換わります。 !!

どうすればそれを修正できますか?

4

1 に答える 1

4

誰も質問に答えず、解決策を見つけたので、最終的に同じ問題または同様の問題に直面する可能性のある他の人々を助けるために、ここに公開します:D

それぞれのケースからを削除しTextView subTitulo = (TextView) findViewById(R.id.subTitulo);、スイッチが開始する前に追加しましたが、onClick関数のview引数を「取得」します(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;


[...]
于 2010-09-25T13:33:38.673 に答える