2012-07-06 106 views
0

全部 - 我有一個應用程序,用戶在遊戲中輸入玩家的名字。他/她可以輸入2-4名玩家。該應用程序採用名稱並將其放入微調器中。當用戶輸入4名球員時效果很好,但當他們只輸入2或3名球員時,球員有2個或1個(分別)空的空間。我怎麼能這樣做,當用戶輸入少於4個的球員,只有這個數字的名字出現在微調(沒有空的空間)。這裏是我使用的代碼:Spinner中的項目自定義項數

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 = Player2, 等

示例代碼的歡迎,並感謝您的時間。 編輯:

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); 
+0

用戶在哪裏輸入玩家人數以及它與Spinner的互動情況如何?請張貼更多你的代碼。 – Sam 2012-07-06 00:17:34

+0

用戶在早期活動中輸入玩家。請參閱編輯接收意向 – ninge 2012-07-06 00:19:32

回答

1

你可以根據這些信息檢查哪些消息是空的,然後修改項目陣列。我們的目標是到一個數組中沒有多餘的空格在它

編輯傳遞到您的ArrayAdapter:

List<String> playersList = new ArrayList() ; 
     if(!message.equals("")){ 
      playersList.add(message); 
     } 
     etc.. 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, playersList); 
+0

好的。代碼將如何查找? – ninge 2012-07-06 00:30:43

+0

你可以使用一個List而不是一個數組作爲你的玩家名字並動態構建它。請參閱編輯。 – Nate 2012-07-06 00:54:02

+0

甜的就是這樣。非常感謝! – ninge 2012-07-06 00:59:09

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。

+0

好吧,讓我試試看。 – ninge 2012-07-06 00:46:32

+0

我該怎麼做,因爲我的球員在'String [] items = new String [] {「No Owner」,message,message2,message3,message4};'不是R.id.contentlist? – ninge 2012-07-06 00:52:40

+0

我應該提到R.id.contentlist引用了一個TextView,它在你的大版面中。 TextView是你如何得到結果字符串數組。我會在上面編輯它。 – panoptical 2012-07-06 01:00:03