2013-12-09 41 views
0

我正在製作一個籃球統計數據的應用程序。我目前正在努力讓參加數據統計的人在比賽開始時進入/退出。我還打算稍後重複使用此代碼,以便人員可以在遊戲過程中將人員分入和退出。無論如何,我堅持如何基於數組大小創建按鈕列表。從包含在數組中的數據創建按鈕的動態列表

目前,我有一個數組,用於提取玩家的號碼,姓名以及他們是否從隊伍數據庫中進出。按鈕會顯示玩家的號碼,以便他們可以進出。我希望設置它,以便當一個人點擊其中一個按鈕時,它會改變誰被視爲遊戲中的「in」,並更新數據庫中的值。我將把下面的小代碼放在裏面。我嘗試了很多方法,比如gridview,循環一個按鈕創建命令和其他一些東西,但一直無法讓它們中的任何一個以我想要的方式工作。在此先感謝您的幫助。

活動設置是誰在板凳上:

package com.newelementapp.basketballstatbook; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 


public class HomeBench extends Activity { 


    String tname, t1, t2; 
    String [] players; 
    LinearLayout ll; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_bench); 
     Bundle rteam = getIntent().getExtras(); 
     tname = rteam.getString("team"); 
     StatbookDB get = new StatbookDB(this); 
     get.open(); 
     players = get.getHomePlayers(tname); 
     get.close(); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
    } 

} 

DB:

public String[] getHomePlayers(String tname) { 
     // TODO Auto-generated method stub 
     String [] columns = {KEY_PNUMBER, KEY_PNAME, KEY_INOUT}; 
     List<String> hplayers2 = new ArrayList<String>(); 
     String teamname = tname.toLowerCase().replaceAll(" ", "_"); 
     Cursor c = ourDatabase.query(teamname, columns, null, null, null, null, null); 

     int inum = c.getColumnIndex(KEY_PNUMBER); 
     int iname = c.getColumnIndex(KEY_PNAME); 
     int iout = c.getColumnIndex(KEY_INOUT); 
     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){ 
      String s = c.getString(iname); 
      String i = c.getString(inum); 
      String t = c.getString(iout); 
      hplayers2.add(i); 
      hplayers2.add(s); 
      hplayers2.add(t); 
     } 
     String [] hplayers = new String[hplayers2.size()]; 
     hplayers2.toArray(hplayers); 
     return hplayers; 
    } 

按鈕創建方法

private void createButtons() { 
    // TODO Auto-generated method stub 
    for(int i = 0; i<players.length; i+=3){ 
     Button btn = new Button(this); 
     LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     btn.setId(i); 
     btn.setText(players[i]); 
     ll.addView(btn, params); 
     btn1=(Button)findViewById(i); 
     btn1.setOnClickListener(new OnClickListener() { ... } 
+0

當你說 - 「我已經嘗試了很多方法,例如gridview,循環通過按鈕創建命令和其他一些東西,但一直沒能讓它們中的任何一個以我想要的方式工作。」所以,你可以創建按鈕,但是當你點擊按鈕時,你無法獲得你想要的功能?或者是你甚至無法按照你的佈局目標來創建和顯示按鈕? –

+0

你能更具體嗎?什麼不起作用?任何錯誤?例外? –

+0

@Harikris和Adnan Mulla,我一直無法創建按鈕並實現所需的功能。我已經看了很多關於這個主題的不同文章/堆棧溢出問題,但一直無法找到開始的地方。我對Android相當陌生,但對基礎知識有所瞭解。 – NewElement

回答

0

關鍵是要有一個ViewGroupLinearLayoutRelativeLayout在您的home_bench.xml文件中。這ViewGroup將成爲你的容器。然後,當您循環並動態創建Buttons時,您不斷將這些按鈕添加到容器ViewGroup。然後你將能夠看到你正在創建的按鈕。另外,創建按鈕後,在這些按鈕上使用setOnClickListener()來指定一個onClick例程,您可以在其中定義單擊按鈕時要執行的操作。使用ids來區分按鈕。創建按鈕時,您可以爲按鈕分配一個ID。 HTH。

相關問題