Доступ в сгенерированном коде TextView Resource - PullRequest
0 голосов
/ 01 августа 2011

У меня маленькая проблема.У меня есть инструмент, который также будет иметь большое количество меняющихся каналов, которые должны отображаться в макете.Поэтому я должен создать TextView для отображения значений в коде.Который работал как шарм.

Моя проблема:

  1. Как получить доступ к созданному полю "valueTV" в моем коде?В частности, я хочу записать значение акселерометра в него, который хранится в String SAccX.

  2. Есть ли способ увидеть созданное поле с помощью R.id.XXX в окне DDMS или Debug Eclipse?

ЕслиЯ пытаюсь получить к нему доступ с помощью назначения, как обычный объект XML. Eclipse выдает ошибку (что-то вроде "sAccX = (TextView) findViewById(R.id.valueTV201);). Я понимаю, почему возникает эта ошибка, но я не знаю, как ее обойти ;-)

    //Get Tablelayout 
    TableLayout ChannelTable = (TableLayout) findViewById(R.id.TableChannels);

    //Create a new Row for every Channel
    for (int current = 0; current < numberOfChannels; current++)
    {
        // Create a Table with new ID
        TableRow tr = new TableRow(this); 
        tr.setId(100 + current); 
        tr.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        // Create a TextView to show the Name of the Channel
        TextView TVChannels = new TextView(this); 
        TVChannels.setId(200 + current);
        TVChannels.setText(channels[current]);
        TVChannels.setTextColor(Color.DKGRAY);
        TVChannels.setTextSize(20);
        TVChannels.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        tr.addView(TVChannels);
           // Create a TextView to house the values
        TextView valueTV = new TextView(this);
        valueTV.setId(200 + current);      
        valueTV.setTextColor(Color.DKGRAY);
        TVChannels.setTextSize(20);
        valueTV.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
        tr.addView(valueTV);

        // Add the TableRow to the TableLayout
        ChannelTable.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.FILL_PARENT,
                LayoutParams.WRAP_CONTENT));
    }
} /* End of OnCreate*/

1 Ответ

0 голосов
/ 01 августа 2011

Используйте теги вместо идентификаторов

View.setTag()

, а затем, чтобы найти представление с определенным тегом, используйте

findViewWithTag()
...