textview clickable without xml

时间:2013-04-16 09:31:09

标签: java android click textview

我试图让textview可点击。我有50个textview所以我用java代码创建它们。问题是我不知道如何使它们可点击。如果我使用XMl,那将很容易,因为这个问题已被提出很多。

这是我的代码:

package com.example.goo;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class Calendrier extends Activity implements OnClickListener{

    LinearLayout linear;
    TextView[] textViewArray = new TextView[50];
    TextView[] textViewArray2 = new TextView[50];
    LinearLayout[] layoutArray = new LinearLayout[50];
    ScrollView SV;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        

        SV = new ScrollView(this);          
        linear = new LinearLayout(this);

        //Crée et Affiche les 50 textview sur lesquelles on cliquera
        for (int i = 0; i < 50; i++) {
            textViewArray[i] = new TextView(this);
            textViewArray[i].isClickable();
            textViewArray[i].setText("Journée" + (i+1));
            linear.addView(textViewArray[i]);
        }

        //Création de 50 textview qui seront cette fois ajoutés dans leur layout perso
        for (int i = 0; i < 50; i++) {
            textViewArray2[i] = new TextView(this);
            textViewArray2[i].setText("Journée" + (i+1));
        }

        //Création 50 layout 
        for (int i = 0; i < 50; i++) {
            layoutArray[i] = new LinearLayout(this);
        }

        for (int i = 0; i < 50; i++) {
            layoutArray[i].addView(textViewArray2[i]);
        }

        linear.setOrientation(LinearLayout.VERTICAL);

        SV.addView(linear);
        setContentView(SV);   
    }


    @Override
    public void onClick(DialogInterface dialog, int which) {
        //What should I do here ?
        //I'd like if I click on the textview n°1, the layout I create before ( layoutArray[i] = new LinearLayout(this); ) appears
        if (dialog == textViewArray[0]){
                System.out.println("this text never prints :( ");
        }

    }
}

2 个答案:

答案 0 :(得分:2)

你忘了

textViewArray[i].setOnClickListener(this);

AND,您使用DialogInterface中的OnClickListener。这是错的。您必须将View.OnClickListener与textview

一起使用

答案 1 :(得分:1)

首先使用View.OnClickListener代替DialogInterface.OnClickListener。 然后你可以使用

textViewArray[i].setOnClickListener(this);