Android:组元素(TextView),因此他们共享一个onClick

时间:2015-03-10 17:53:23

标签: android android-layout textview onclicklistener

我正在创建一个数独游戏应用程序,我创建了一个带有81个单独TextView的TableLayout来表示每个方块。

现在的问题是,我希望用户能够选择一个方格,然后选择一个数字放入他们选择的方格中。 有什么方法可以将它们组合在一起,然后获取它们单击的单个TextView吗?

也许是这样的:

TextView selected;
table.setOnClickListener(new TableLayout.OnClickListener() {
    ***selected = (TextView) table.getSelectedElement() ?***
}

这样,当他们选择一个号码时,我可以:

number.setOnClickListener(new Button.OnClickListener() {
    selected.setText( number.getText().toString() );
}

这样,我不必为每个方块制作81个单独的onClick方法,我确信它不会成为解决方案。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

假设您正在使用行,您可以尝试类似:

int count = table.getChildCount();
for(int i = 0; i < count; i++){ 
    final View row = table.getChildAt(i);
    for(int j = 0; j < row.getChildCount()){
        TextView textView = (TextView) row.getChildAt(j); 
        textView.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick (View v) {
                    //write some custom alert box that allows use to enter
                    //text. positive alert button should do the follow
                    v.setText(theResult);    
                }
            }
    }
}

你可以优化代码......我已经直接将它写入stackoverflow,很抱歉,如果我有错误。

还使用GridView

的cosider

答案 1 :(得分:0)

您可以在xml中添加onClickListener属性,将android:onClick="onClick"设置为任意视图。在这种情况下,育儿活动必须具有一个功能

public void onClick(View v) {
}

将被调用。参数View v是对单击的视图的引用。

正如@royB所提到的,如果您使用GridView实现了表,那么您将节省大量工作。