2014-12-20 4 views
-1

Я рисую верхнюю часть стола, а затем тело стола. В каждой ячейке таблицы у меня есть TextView, так как я могу получить его id или другой номер, когда пользователь нажал на него?Как получить идентификатор TextView из строки таблицы

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

    TableLayout lTableLayout; 
    lTableLayout = (TableLayout) findViewById(R.id.tbLayout); 

    /*Draw table top*/ 
    TableRow trTop = new TableRow(this); 
    trTop.setPadding(0, 5, 0, 0); 
    trTop.setBackgroundColor(Color.rgb(102, 178, 255)); 
    lTableLayout.addView(trTop, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    String[] str = new String[]{"Time", "Room1", "Room2"}; 
    for(int j=0; j<3; j++){ 
     TextView tv1 = new TextView(this); 
     tv1.setPadding(2, 2, 2, 2); 
     tv1.setTextSize(14); 
     tv1.setText(str[j]); 
     trTop.addView(tv1,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
    } 
    /*Draw table body*/ 
    for(int i=0; i<5; i++){ 

     final TableRow tr1 = new TableRow(this); 
     tr1.setPadding(0, 5, 0, 0); 



     if((i%2) == 0) 
      tr1.setBackgroundColor(Color.WHITE); 
     lTableLayout.addView(tr1, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     for(int j=0; j<3; j++){ 

      final TextView tv1 = new TextView(this); 
      tv1.setPadding(2, 2, 2, 2); 
      tv1.setTextSize(12); 
      if(j==0){ 
       tv1.setText(8+i + ":00"); 
      }else{ 
       tv1.setText("reserved"); 
      } 
      tr1.addView(tv1,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
      tv1.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View arg0) { 
        Toast.makeText(getApplicationContext(), "id = " + tv1.getId(), 
          Toast.LENGTH_LONG).show(); 
        Log.e("TAG", " clicked ID: " + tr1.getId()); 
       } 
      }); 
     } 

    } 

Здесь я ищу ID:

public void onClick(View arg0) { 
        Toast.makeText(getApplicationContext(), "id = " + tv1.getId(), 
          Toast.LENGTH_LONG).show(); 
        Log.e("TAG", " clicked ID: " + tr1.getId()); 
       } 
      }); 

Но TOAST говорит: "ID = -1" для каждого TextView.

+0

'setid()' программно для текстовых просмотров, например, 'tv.setid (j);' – prakash

+0

спасибо большое! Это очень помогло мне! –

ответ

0
public void onClick(View arg0) { 
        Toast.makeText(getApplicationContext(), "id = " + tv1.getId(), 
          Toast.LENGTH_LONG).show(); 
        Log.e("TAG", " clicked ID: " + tr1.getId()); 
       } 
      }); 

Похоже, вы ждете, чтобы получить log.e() с TV1 .getId(), и он говорит tr1 .getId(), так что вы получаете строку таблицы Id и а не идентификатор TextView. Попробуйте изменить tr1 на tv1 и скажите мне, если он сработает.

EDIT:

Everytime вы создаете TextView и строку таблицы, назначить их IdS вручную с tr1.setId(i) и tv1.setId(j). Он должен работать с этим.

+0

В журнале я попытался получить идентификатор tablerow, а также в Toast - TextView id одновременно. –

+0

, которые они купили, имеют аналогичный ответ get id = "-1" –

+0

Так что, я думаю, это дает вам Id = -1 для каждого элемента, потому что это значение по умолчанию. Я бы попытался сделать то, что говорит этот ответ в отредактированной части (теперь я отредактирую его) –

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