【问题标题】:How to set setOnClickListener to TextView that has been added programmatically?如何将 setOnClickListener 设置为以编程方式添加的 TextView?
【发布时间】:2018-10-04 10:24:13
【问题描述】:

我花了将近 2 天的时间来解决这个问题。我也搜索了其他类似的问题,但仍然找不到解决此问题的方法。非常感谢您的帮助。

  @Override
    public void addField() {
        if (countTv < 7) {
            allTextView[countTv] = new TextView(this);
            allTextView[countTv].setId(countTv);
            button = new Button(this);

            linearLayout = new LinearLayout(this);
            linearLayout.setOrientation(LinearLayout.VERTICAL);
            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

            layoutParams.setMargins(0, 50, 0, 0);

            button = findViewById(R.id.bt_new_field);

            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            final View rowView = inflater.inflate(R.layout.search_field, null);

            allTextView[countTv].setOnClickListener(listener);
            llParentField.addView(rowView, layoutParams);
        }
        countTv++;
    }

    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case 0:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 1:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 2:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 3:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 4:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 5:
                    tag = v.getId();
                    toSearchActivity();
                    break;
                case 6:
                    tag = v.getId();
                    toSearchActivity();
                    break;
            }
        }
    };

注意:我已经尝试了所有可能的方法来实现 View.OnClickListener,但仍然无法点击新添加的 TextView。忘记我代码中的按钮,这并不重要。非常感谢您的帮助!

【问题讨论】:

    标签: java android android-studio textview onclicklistener


    【解决方案1】:

    对于每个视图组件,我们可以像 TextView 一样调用 setOnclickLister()。

    你可以这样写:

    allTextView[countTv].setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Code here executes on main thread after user presses button
             }
         });
    

    【讨论】:

      【解决方案2】:

      你可以这样做

       textGreen[i].setOnClickListener(ClickListener);
      

      【讨论】:

        猜你喜欢
        • 2018-02-02
        • 2017-10-20
        • 2013-02-07
        • 2018-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-27
        相关资源
        最近更新 更多