从数组中包含的数据创建按钮的动态列表

时间:2013-12-09 03:26:19

标签: android

我正在申请参加篮球比赛。我目前正在努力允许正在进行统计的人在游戏开始时进入/退出。我还计划稍后重复使用此代码,以便此人可以在游戏过程中将人员分组。无论如何,我仍然坚持如何根据数组的大小创建按钮列表。

目前,我有一个数组设置来提取玩家的号码,姓名以及他们是否在团队的数据库中。按钮会显示玩家的号码,以便他们可以进出。我想设置它,以便当一个人点击其中一个按钮时,它会改变游戏中被认为是“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() { ... }

1 个答案:

答案 0 :(得分:0)

关键是在ViewGroup文件中设置LinearLayout,例如RelativeLayouthome_bench.xml。这个ViewGroup将成为您的容器。然后,当您循环并动态创建Buttons时,您将继续将这些按钮添加到容器ViewGroup。然后,您将能够看到正在创建的按钮。此外,在创建按钮后,在这些按钮上使用setOnClickListener()指定onClick例程,您可以在其中定义单击按钮时要执行的操作。使用ids区分按钮。您可以在创建按钮时为按钮分配ID。 HTH。