在Android中以编程方式创建的多个textview的单个onclick侦听器 [英] single onclick listener for multiple textviews created programmatically in Android

查看:91
本文介绍了在Android中以编程方式创建的多个textview的单个onclick侦听器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我已经使用下面编写的代码成功地以编程方式创建了许多文本视图.我想为这些textview创建一个有效的单一侦听器,因为我需要在单击时执行操作.我怎么知道点击了哪个textview并以编程方式将侦听器附加到它?

So I have successfully created a number of textviews programmatically using the below piece of code that I have written. I would like to create an efficient single listener for these textviews as I need to perform an action on click. How do I know which textview was tapped on and attach a listener to it programmatically?

PS:请不要发布使用XML布局文件的解决方案.提前致谢.

PS: Please don't post solutions using XML layouts file. Thanks in advance.

optionCubesTextviews = new TextView[cubesLength];
    for(i=0;i<cubesLength;i++) {
        optionCubesTextviews[i] = new TextView(this);
        optionCubesTextviews[i].setId(View.generateViewId());
        optionCubesTextviews[i].setTextSize(baseFont);
        final RelativeLayout.LayoutParams optionCubesTextviewsParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        optionCubesTextviewsParams.addRule(RelativeLayout.BELOW, solutionCubeTextviews[i].getId());
        if (i != 0) {
            optionCubesTextviewsParams.addRule(RelativeLayout.RIGHT_OF, optionCubesTextviews[i - 1].getId());
        }
        optionCubesTextviewsParams.setMargins(10, 10, 10, 10);
        optionCubesTextviews[i].setPadding(20, 20, 20, 20);
        optionCubesTextviews[i].setTypeface(Typeface.DEFAULT);
        //String qTextColorColor = preferenceFile.getString("qTextColor", DefaultManager.qTextColor);
        optionCubesTextviews[i].setTextColor(Color.WHITE);
        optionCubesTextviews[i].setBackgroundColor(Color.parseColor(randomColorString));
        optionCubesTextviews[i].setText(Character.toString(shuffledAnswerAsOptions.charAt(i)));
        optionCubesTextviews[i].setVisibility(View.VISIBLE);

        //Adding to Layout in invisible state
        rLayout.addView(optionCubesTextviews[i], optionCubesTextviewsParams);
    }

推荐答案

只需创建一个侦听器,并将其分配给您的视图即可,就像其他任何属性一样.

Just create a listener and assign it to your views like you would any other attribute.

OnClickListener l = new OnClickListener(){
    public void onClick(View v){
        // TODO whatever...
    }
}

for(i=0 ; i < optionCubesTextviews.length; i++) {
    optionCubesTextviews[i].setTag(i);
    optionCubesTextviews[i].setOnClickListener(l);
}

这篇关于在Android中以编程方式创建的多个textview的单个onclick侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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