2013-04-16 3 views
1

Я пытаюсь сделать textview clickable. Я получил 50 textview, поэтому создаю их с помощью java-кода. Проблема в том, что я не знаю, чтобы сделать их доступными для кликов. Если бы я работал с XMl, это было бы легко, потому что вопрос был задан очень часто.textview clickable без 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

Вы забыли

textViewArray[i].setOnClickListener(this); 

И, вы используете OnClickListener от DialogInterface. Это не верно. Вы должны использовать View.OnClickListener с текстовым полем

+0

Я отредактировал мой код, и у меня теперь это: http://pastebin.com/1N09ztjA Что я делаю до сих пор не так? – user1965878

+0

Все в порядке на вашем экране? Отображаются все текстовые поля? Попробуйте другой метод тестирования в OnClick, например Toast.makeText (это, «test», Toast.LENGTH_SHORT) .show(); (без каких-либо тестов) – Pauland

+0

У меня была глупая ошибка (плохая копия/вставка). он отлично работает, большое спасибо! – user1965878

1

Первое использование View.OnClickListener вместо DialogInterface.OnClickListener. Затем вы можете использовать

textViewArray[i].setOnClickListener(this); 
Смежные вопросы