0

こちらで質問 して回答を頂きました

OK、xml ファイルにパッケージ名を追加するだけでよかったので、このスピナーは動作するようになりましたが、別の問題が発生しました。初期化中に選択された要素を選択するには、それを 2 回クリックする必要があります。カウンターを使用して、ユーザーが選択したアイテムかどうかを確認しているためだと思います。

variables.spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
                    @Override

                    public void onItemSelected(AdapterView<?> parent, View view,
                            int position, long id) {    
                        CharSequence t2 = (CharSequence) parent.getItemAtPosition(position);
                        variables.wall=t2.toString();
                        if(i>0){ 
                            new DownloadRow().execute();
                        }
                        if(i==0) i++;

                    }
                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) 
                        // TODO Auto-generated method stub
                    }      
                });

ユーザーが選択した項目を 1 回だけクリックする必要があるようにするにはどうすればよいですか?

単なるヒントです (つまり、処理をまったく必要としません)。いいえ、これは不適切なバリアントです。状況は、ユーザーが位置 0 (または他の位置) で要素をクリックすると、新しい DownloadRow().execute() を開始する必要があるということです。しかし、現在(理由はわかりません)、ユーザーが要素をゼロの位置でクリックしても、何も起こりません。ユーザーがもう一度クリックすると、DownloadRow().execute() が開始されます。これは、ユーザーが最初にクリックした後に実行する必要があるためです。このスピナーの初期化中に var i のインクリメントが発生しない場合 (またはその他の問題) のように見えます。しかし、position==0 の場合にもう一度インクリメントすると。次に DownloadRow().execute() が自動的に開始され、ユーザーは自分で iem を選択しません。

4

2 に答える 2

0

解決策を見つけました。

 if(i==0) {
        if(position==0) variables.spinner1.setSelection(0);
        i++;
}
于 2013-01-09T01:42:51.907 に答える
0

ここで何をしようとしているのかを完全に理解しているかどうかはわかりませんが、if ステートメントを次のように変更すると、次のようになると思います。

if(position>0){ 
    new DownloadRow().execute();
}

これにより、既定値以外の項目が選択されたときに DownloadRow が開始されるため、必要な動作が得られるはずです。

ユーザーが選択できるデフォルト値が必要な場合は、代わりにデフォルト値 (位置 0) をヒントとして (つまり、処理をまったく必要としない) 1 つにすることをお勧めします。 DownloadRow().execute を呼び出したいオプション

于 2013-01-08T15:59:27.780 に答える