Как установить onClickListener для текстовых представлений, генерируемых динамически? - PullRequest
0 голосов
/ 18 января 2012

Может кто-нибудь, пожалуйста, подскажите мне, как установить OnClickListener для TextViews, которые генерируются динамически. У меня есть несколько кнопок в моем приложении. Теперь, когда нажимается определенная кнопка, некоторые определенные текстовые элементы извлекаются из базы данных на основе количества возвращаемых элементов, которые генерируются соответствующими текстовыми представлениями для отображения извлеченных текстовых элементов. Теперь проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как установить onClickListner для динамически генерируемого TextView. Следующее - это фрагмент кода, где я создаю свой TextView. Пожалуйста, объясните мне, что мне делать.

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.imageButton1:
catagory = "General";
            IndependentDB genData = IndependentDB.getInstance();
            genData.open(this);
            ArrayList<TextHolder> genList = new ArrayList<TextHolder>();
            genList = genData.getAllTextFromGenT();
            genData.close();
            x = genList.size();
            String xstr = new StringBuilder().append(x).toString();
            System.out.println(xstr);
            mainText = new TextView[x];
            textLayout = new LinearLayout[x];
            llseperator = new LinearLayout[x];
            textLayoutContainer
                    .setBackgroundResource(R.color.dark_navy_blue);
            if (!genList.isEmpty()) {
                for (int i = 0; i < x; i++) {
                    TextHolder firstOne = genList.get(i);
                    String text = firstOne.getText();
                    mainText[i] = new TextView(this);
                    mainText[i].setId(i);
                    mainText[i].setText("Text");
                    mainText[i].setLayoutParams(new LayoutParams(
                            LayoutParams.WRAP_CONTENT,
                            LayoutParams.WRAP_CONTENT));
                    mainText[i].setTextSize(25);
                    mainText[i].setGravity(Gravity.CENTER);
                    mainText[i].setText(text);
                    mainText[i].setTextColor(0xFFFFFFFF);
                    mainText[i].setClickable(true);
                    mainText[i].setOnClickListener(this);
                    llseperator[i] = new LinearLayout(this);
                    llseperator[i].setId(i);
                    llseperator[i].setLayoutParams(new LayoutParams(
                            LayoutParams.FILL_PARENT,
                            LayoutParams.WRAP_CONTENT));
                    llseperator[i].setGravity(Gravity.CENTER);
                    llseperator[i]
                            .setBackgroundResource(R.drawable.tv_seperator);

                    textLayout[i] = new LinearLayout(this);
                    textLayout[i].setId(i);
                    textLayout[i].setLayoutParams(new LayoutParams(
                            LayoutParams.FILL_PARENT,
                            LayoutParams.WRAP_CONTENT));
                    textLayout[i].setGravity(Gravity.CENTER);
                    textLayout[i].addView(mainText[i]);
                    textLayoutContainer.addView(textLayout[i]);
                    textLayoutContainer.addView(llseperator[i]);
                }// End of for
                }// End of If
        break;}

Ответы [ 3 ]

0 голосов
/ 18 января 2012

У вас уже есть метод onClick() в классе Activity (реализован View.setOnClickListener), поэтому я предлагаю вам создать новый класс, который реализует интерфейс View.setOnClickListener для обработки нажатия TextView.

Try,

class TextClick implements View.setOnClickListener {
  @Override
  public void onClick(View view) {
     TextView tx=(TextView) view;
     ...
   }
}

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

 TextClick click=new TextClick();
 for (int i = 0; i < x; i++) {
    TextHolder firstOne = genList.get(i);
    String text = firstOne.getText();
    mainText[i] = new TextView(this);      
    mainText[i].setOnClickListener(click);
    ...
 }
0 голосов
/ 18 января 2012

Это одинаковая настройка для прослушивателей кликов независимо от того, было ли представление динамически сгенерировано.

0 голосов
/ 18 января 2012

Например. у вас есть список телевизоров для хранения ваших объектов TextView, созданных в результате БД. Что вы должны сделать, это так:

for(int i =0;i<tvs.count;i++){
tvs.get(i).setOnClickListener(new OnClickListener(){
...
})
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...