如何为自定义布局中的每个TextView添加setOnClickListener

时间:2017-02-25 10:37:57

标签: java android

+------------+------------+-------------+-------------+
| id         |  keyword2  |   keyword1  |  Relevance1 |
+------------+------------+-------------+-------------+
| 1          | B,C,D      |   A,B,C     |  0,1213     |
+------------+------------+-------------+-------------+
| 2          | B,C,D      |  B,A,F      !  0,01234    |
+------------+------------+-------------+-------------+

我想要的是在DialogBox内的所有文本视图上都有一个监听器,这样每当用户按下这些视图中的任何一个时,都会隐含textview的颜色。就像在笔记应用程序中一样,可以选择主题颜色。

我无法做到这一点。请告诉我正确的方法。

4 个答案:

答案 0 :(得分:0)

你可以像这样设置点击监听器..

((TextView)v.findViewById(R.id.first_box)).setOnClick....

依旧......

答案 1 :(得分:0)

我更喜欢为每个视图创建一个新的侦听器。大多数情况下,我为此目的创建匿名类,但每隔一段时间一个命名类是合适的,例如当多个视图具有相似的行为时。这是一个例子:

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstance) {
        setContentView(R.layout.custom_dialog);
        TextView first = findViewById(R.id.first_box);
        first.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                // logic goes here
            }
        });
    }
}

为每个视图冲洗并重复。

请注意,我在示例代码中使用了一个Activity,但同样的原则适用于Fragments。

另外,我建议您使用更多描述性名称而不仅仅是数字。如果在你的名字中使用数字是有意义的,比如在计算器应用程序中,那么你的代码中可能应该有一个Views数组。您甚至可以更进一步,以编程方式创建视图以利用for循环。

答案 2 :(得分:0)

由于您已经夸大了自定义对话框,请按照以下步骤进行操作

1)获取每个文本视图的引用。

2)为每个视图创建一个监听器

3)点击主题时更改主题。

sudo apt-get install build-essential

对其余文本视图执行此操作。

答案 3 :(得分:0)

你的代码应该是这样的, 做出必要的改变。

public class CustomDialog extends DialogFragment {
LayoutInflater inflater;
View v;
TextView text1;
TextView text2;
TextView text3;
TextView text4;
TextView text5;
TextView text6;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);
    addListenerOnTextView();

}

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    inflater = getActivity().getLayoutInflater();
    v = inflater.inflate(R.layout.custom_dialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setView(v);

    return builder.create();
}



public void addListenerOnTextView() {

    final Context context = this;

    text1 = (TextView) findViewById(R.id.first_box);

    text1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //Your code for what you want to do goes here
            finish();
        }

    });

}

}

重复文本2的public void addListenerOnTextView() {构造函数到文本6