2015-12-23 3 views
-4

Я создал плату 10x10 на TableLayout, заполненную облаком Java TextViews. Вскоре после этого я попытался разрешить всем 100 TextViews Clickable, но только TextView - последний столбец и последняя строка. Интересно, как получить доступ ко всем текстовым файлам.Как сделать TextView доступным?

EDIT: Поместите onClick внутри цикла, поэтому все текстовые элементы были доступны для кликов, однако только последний TextView меняет цвет, независимо от того, что было нажато. У кого-то было бы решение?

public class GameAct extends AppCompatActivity { 

    TableLayout tableLayout; 
    TableRow tableRow; 
    TextView textView; 
    Chronometer chronometer; 
    long tempoQuandoParado = 0; 
    boolean isClickPause = false; 


    @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_game); 

    chronometer = (Chronometer)findViewById(R.id.chronometer); 
    tableLayout = (TableLayout) findViewById(R.id.tabuleiro); 

    GradientDrawable gd = new GradientDrawable(); 
    gd.setStroke(2, 0xFFFFFFFF); 
    gd.setColor(Color.rgb(0, 0, 128)); 

    final GradientDrawable gradientDrawable = new GradientDrawable(); 
    gradientDrawable.setStroke(2, 0xFFFFFFFF); 
    gradientDrawable.setColor(Color.RED); 

    tableLayout = (TableLayout) findViewById(R.id.tabuleiro); 

    for (int i = 0; i < 10; i++){ 

     tableRow= new TableRow(this); 
     tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)); 

     for (int j = 0; j < 10; j++) { 

      textView = new TextView(this); 
      textView.setBackgroundDrawable(gd); 
      textView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)); 
      textView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        textView.setBackgroundDrawable(gradientDrawable); 

        if (isClickPause) { 
         chronometer.setBase(SystemClock.elapsedRealtime() + tempoQuandoParado); 
         chronometer.start(); 
         isClickPause = false; 
        } else { 
         chronometer.setBase(SystemClock.elapsedRealtime()); 
         chronometer.start(); 
         tempoQuandoParado = 0; 
        } 
       } 
      }); 

      tableRow.addView(textView,35, 35); 
     } 

     tableLayout.addView(tableRow, new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 

    } 

} 

} 

+0

Может быть, это поможет вам: http://blog.danlew.net/2015/12/14/making -edittexts-with-links-both-clickable-and-editable/ – piotrek1543

+1

Поскольку вы устанавливаете прослушиватель кликов ** вне **, то петли –

+1

@ FrankN.Stein являются правильными. Вы разместили слушателя в неправильном месте – piotrek1543

ответ

1

Добавить Нажмите слушателя в текстовом виде внутри цикла

for (int i = 0; i < 10; i++){ 
     tableRow= new TableRow(this); 
     tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)); 
     for (int j = 0; j < 10; j++) { 
     textView = new TextView(this); 
     textView.setBackgroundDrawable(gd); 
     textView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT)); 
     textView.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        v.setBackgroundDrawable(gradientDrawable); 

        if (isClickPause) { 
         chronometer.setBase(SystemClock.elapsedRealtime() + tempoQuandoParado); 
         chronometer.start(); 
         isClickPause = false; 
        } else { 
         chronometer.setBase(SystemClock.elapsedRealtime()); 
         chronometer.start(); 
         tempoQuandoParado = 0; 
        } 
       } 
     }); 
     tableRow.addView(textView,35, 35); 
     } 

     tableLayout.addView(tableRow, new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    } 
+0

Спасибо, я новичок в Программирование Android –

+0

Я положил в цикле. Таким образом, все текстовые элементы доступны для просмотра. Но только последний ClickView продолжает менять цвет. Любое решение? спасибо –

+0

Позвольте мне проверить это. –

Смежные вопросы