2014-11-11 5 views
0

я столкнулся с проблемой медленной работы ...Оптимизация производительности для создания представлений во время выполнения

Просто случай:

RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.myrlLayout); 
//Adding now 100 Buttons with 100 TextViews below each Button(just a example) 
for(i=0;i<100;i++) { 
    Button btn = new Button(this); 
    btn.setId(i+1); //Should be a positive integer 
    //set LayoutParams for Button 
    RelativeLayout.Layoutparams btn_layoutparams = new RelativeLayout.LayoutParams.... 
    .... 
    myLayout.addView(btn, btn_layoutparams); 
    TextView mytv = new TextView(this); 
    mytv.setid(101+i); 
    //set LayoutParams for Button with referenced to the Button(because the Textview Needs to be 
    of Button) 
    .... 
    myLayout.addView(mytv, tv-layoutparams); 
} 

Что касается до большого количества соображений программно созданного, мой приложение начинает очень медленно ... Я думаю, что это не из-за создания нового представления, а из-за установки LayoutParamters каждый раз для представления. Я не могу найти обходное решение, потому что мои LayoutParams для TextView, например, должны ссылаться на кнопку, созданную ранее. Из-за этого я не могу создать XML-макет-файл или файл в стиле XML, потому что я не могу ссылаться на привязку компоновки tv в XML-файле к кнопке, которая не существует в Moment. По крайней мере, я не нашел пути. Я надеюсь, что кто-то получил представление о том, как заметно повысить производительность при создании такого количества просмотров во время выполнения. Каждый совет приветствуется.

Update относительно answere из rom4ek

Проблема в том, что мне нужно, чтобы подсчитать, сколько просмотров может я добавить в ряд перед экраном шириной используется полностью. Это означает, что мне нужно второе LayoutParams, чтобы добавить следующую кнопку ниже первой кнопки из первой строки. И мне также нужно ссылаться на img-Button, добавленную ранее в LayoutParams .. так что нельзя ссылаться на LayoutParams на кнопку, которая не существует до цикла for.Maybe я полностью пропустил что-то .. У вас есть идея/решения? Спасибо, что ответили.

+0

нашел какое-либо решение? –

ответ

0

Если вы устанавливаете то же самое LayoutParams, что делать, если вы перемещаете RelativeLayout.Layoutparams btn_layoutparams = new RelativeLayout.LayoutParams.... перед циклом? Таким образом, вы будете инициализировать его один раз, а затем не нужно создавать новые LayoutParams на каждом шагу.

+0

Я обновил свой вопрос. @ rom4ek – Mike

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

  • Нет связанных вопросов^_^