Как я могу добавить дополнительные TableRows к моему TableLayout в зависимости от курсора? - PullRequest
1 голос
/ 22 февраля 2011

У меня есть база данных с разными результатами в моей базе данных в моем проекте Android.Я хочу получить эти результаты и показать их в виде таблицы.В таблице разметки я хочу добавить строку для каждого результата и написать столбец «дата» в одном текстовом представлении и «результат» во втором текстовом представлении.Оба текстовых просмотра находятся в одном ряду.Я получаю данные и сохраняю их в курсоре.

Мой вопрос: как мне использовать курсор и добавить строку в зависимости от того, сколько данных в моей базе данных?

Сейчас я пытаюсь добавить строку для каждой строки вкурсор вот так:

TableLayout tl = (TableLayout)findViewById(R.id.table_layout2);
     TableRow tr = new TableRow(this);
     tr.setLayoutParams(new LayoutParams(
                             LayoutParams.FILL_PARENT,
                             LayoutParams.WRAP_CONTENT));
             TextView mTvDate = new TextView(this);
             TextView mTvResult = new TextView(this);
             int x=0;
             for(int i=0;i<c.getCount();i++){
             mTvDate.setText(date[x]);
             mTvResult.setText(""+nocorrect[x]+" av "+ noqs[x] +" ("+ proc[x]+ "%)");
             mTvDate.setLayoutParams(new LayoutParams(
                             LayoutParams.FILL_PARENT,
                             LayoutParams.WRAP_CONTENT));

             mTvResult.setLayoutParams(new LayoutParams(
                             LayoutParams.FILL_PARENT,
                             LayoutParams.WRAP_CONTENT));
             tr.addView(mTvDate);
             tr.addView(mTvResult);
     tl.addView(tr,new TableLayout.LayoutParams(
            LayoutParams.FILL_PARENT,
             LayoutParams.WRAP_CONTENT));
             }

Но я думаю, что мне нужно создать новую табличную строку, потому что я получаю это сообщение об ошибке:

02-22 09:22:17.543: ERROR/AndroidRuntime(333): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Но я не хочу его удалять,Я хочу добавить больше.Есть идеи?Спасибо!

1 Ответ

0 голосов
/ 22 февраля 2011

Привет, попробуйте, я думаю, вы добавляете одну и ту же строку каждый раз.поэтому просто объявляйте это при каждой итерации цикла.

 TableLayout tl = (TableLayout)findViewById(R.id.table_layout2);

         int x=0;
         for(int i=0;i<c.getCount();i++){
 TableRow tr = new TableRow(this);
 tr.setLayoutParams(new LayoutParams(
                         LayoutParams.FILL_PARENT,
                         LayoutParams.WRAP_CONTENT));
         TextView mTvDate = new TextView(this);
         TextView mTvResult = new TextView(this);
         mTvDate.setText(date[x]);
         mTvResult.setText(""+nocorrect[x]+" av "+ noqs[x] +" ("+ proc[x]+ "%)");
         mTvDate.setLayoutParams(new LayoutParams(
                         LayoutParams.FILL_PARENT,
                         LayoutParams.WRAP_CONTENT));

         mTvResult.setLayoutParams(new LayoutParams(
                         LayoutParams.FILL_PARENT,
                         LayoutParams.WRAP_CONTENT));
         tr.addView(mTvDate);
         tr.addView(mTvResult);
 tl.addView(tr,new TableLayout.LayoutParams(
        LayoutParams.FILL_PARENT,
         LayoutParams.WRAP_CONTENT));
         }
...