0

すべて - ユーザーがゲームでプレイヤーの名前を入力するアプリがあります。2~4人でエントリーできます。アプリは名前を受け取り、スピナーに入れます。ユーザーが 4 人のプレイヤーを入力するとうまく機能しますが、2 人または 3 人のプレイヤーしか入力しないと、スピナーには (それぞれ) 2 つまたは 1 つの空きスペースがあります。ユーザーが 4 人未満のプレイヤー数を入力したときに、その数の名前のみがスピナーに表示されるようにするにはどうすればよいですか (空のスペースはありません)。私が使用しているコードは次のとおりです。

String[] items = new String[] {"No Owner", message, message2, message3, message4};
Spinner spinner = (Spinner) findViewById(R.id.owner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, items);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

メッセージ = プレイヤー 1、メッセージ 2 = プレイヤー 2 など。

サンプル コードへようこそ。お時間をいただきありがとうございます。編集:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    String message2 = intent.getStringExtra(MainActivity.ANOTHER_MESSAGE);
    String message3 = intent.getStringExtra(MainActivity.YET_ANOTHER);
    String message4 = intent.getStringExtra(MainActivity.AND_ANOTHER);




setContentView(R.layout.next_main);
4

2 に答える 2

1

プレーヤー名を文字列にインポートしているので、そのスロットを埋めるプレーヤーがいない場合は、文字列比較を実行して、各文字列がデフォルト値と一致するかどうかを確認します。つまり、 message.compareTo("") が 0 を返す場合は、それを に含めないでitemsください。これは ArrayAdapter として使用するのが最適です。これは単純な if ブロックを介して行うことができます。

コード例:

ArrayAdapter items = new ArrayAdapter<String>(this, int textViewResourceId);    

if (message.compareTo("") != 0) {
    items.add(message);
}
if (message2.compareTo("") != 0) {
    items.add(message2);
}
....

結果の配列 ( を使用して引き出すことができますtoString()) を使用してスピナーを生成し、残りの項目を続行します。

編集: コンストラクター コードを修正しました。

編集 2: コンストラクターの textViewResourceId を修正しました。

于 2012-07-06T00:40:22.067 に答える