簡體   English   中英

如何將 setOnClickListener 設置為以編程方式添加的 TextView?

[英]How to set setOnClickListener to TextView that has been added programmatically?

我花了將近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。 忘記我代碼中的按鈕,這並不重要。 非常感謝你的幫助!

對於每個視圖組件,我們可以像 TextView 一樣調用 setOnclickLister()。

你可以這樣寫:

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

你可以用

 textGreen[i].setOnClickListener(ClickListener);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM