如何获得onClickListener的按钮来上班的Andr​​oid阵列 [英] How to get onClickListener for Android array of buttons to work

查看:150
本文介绍了如何获得onClickListener的按钮来上班的Andr​​oid阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了来自sqllite数据库按钮的动态数组。对于我的生活,我不能得到一个点击监听器设置单独解决每个按钮。我一直在寻找与所有没有成功3小时。

任何帮助将是AP preciated。不要担心数据库的废话,只是听众。

 进口...公共类CreatePlayList延伸活动{    滚动型scrollleft,scrollright;
    的LinearLayout songsright,songsleft;
    TextView的testtext;
    的String [] [] allsongs;
    INT numofsongs,我;
    按钮B1 [];    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        // TODO自动生成方法存根
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.createplaylist);
        scrollleft =(滚动型)findViewById(R.id.scrollleft);
        scrollright =(滚动型)findViewById(R.id.scrollright);
        songsright =(的LinearLayout)findViewById(R.id.layRight);
        songsleft =(的LinearLayout)findViewById(R.id.layLeft);
        LyricDb连接=新LyricDb(CreatePlayList.this);
        connect.open();
        numofsongs = connect.getNumSongs();
        B1 =新的Button [(numofsongs)];
        allsongs =新的String [numofsongs] [2];
        allsongs = connect.getSongArray();
        connect.close();
        testtext =新的TextView(本);
        testtext.setText(测试);
        songsleft.addView(testtext);        对于(i = 0; I< allsongs.length;我++){
            B1 [I] =新按钮(本);
            B1 [I] .setText(allsongs [I] [1]);
            songsright.addView(B1 [I]);
        }        B1 [19] .setText(测试123);
        createClic();
    }    公共无效createClic(){
        对于(I = 0; I&≤(allsongs.length - 1);我++){
            B1 [I] .setOnClickListener(新View.OnClickListener(){                公共无效的onClick(视图v){
                    // TODO自动生成方法存根
                    testtext.setText(B1 [I] .getText());
                }
            });
        }
    }
}


解决方案

转储我在类级别声明。与此(以下简称按钮theButton需要保持最终)更换方法。

 公共无效createClic()
{
    的for(int i = 0;我≤(allsongs.length - 1);我++)
    {
        最终按钮theButton = B1 [I]
        theButton.setOnClickListener(新View.OnClickListener()
        {            公共无效的onClick(视图v)
            {
                // TODO自动生成方法存根
                testtext.setText(theButton.getText());
            }
        });
    }
}

I have created a dynamic array of buttons that come from sqllite database. For the life of me I cannot get a click listener set up to address each button individually. I have been searching for 3 hours with no success at all.

Any help would be appreciated. Don't worry about the database crap, it's just the listener.

imports...

public class CreatePlayList extends Activity {

    ScrollView scrollleft, scrollright;
    LinearLayout songsright, songsleft;
    TextView testtext;
    String[][] allsongs;
    int numofsongs, i;
    Button b1[];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.createplaylist);
        scrollleft = (ScrollView) findViewById(R.id.scrollleft);
        scrollright = (ScrollView) findViewById(R.id.scrollright);
        songsright = (LinearLayout) findViewById(R.id.layRight);
        songsleft = (LinearLayout) findViewById(R.id.layLeft);
        LyricDb connect = new LyricDb(CreatePlayList.this);
        connect.open();
        numofsongs = connect.getNumSongs();
        b1 = new Button[(numofsongs)];
        allsongs = new String[numofsongs][2];
        allsongs = connect.getSongArray();
        connect.close();
        testtext = new TextView(this);
        testtext.setText("Test");
        songsleft.addView(testtext);

        for (i = 0; i < allsongs.length; i++) {
            b1[i] = new Button(this);
            b1[i].setText(allsongs[i][1]);
            songsright.addView(b1[i]);
        }

        b1[19].setText("test 123");
        createClic();
    }

    public void createClic(){
        for (i = 0; i < (allsongs.length - 1); i++) {
            b1[i].setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    testtext.setText(b1[i].getText());
                }
            }); 
        } 
    }
}

解决方案

Dump the 'i' declared at class level. Replace method with this (the "Button theButton" needs to stay 'final').

public void createClic()
{
    for (int i = 0; i < (allsongs.length - 1); i++)
    {
        final Button theButton = b1[i];
        theButton.setOnClickListener(new View.OnClickListener()
        {

            public void onClick(View v)
            {
                // TODO Auto-generated method stub
                testtext.setText(theButton.getText());
            }
        });
    }
}

这篇关于如何获得onClickListener的按钮来上班的Andr​​oid阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆