На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> уменьшение нумерации строк
    Помогите пожалуйста. Я сделал таблицу с нумерацией. При добавлении строки все хорошо, даже когда удаляю часть строк, и создаю новые, он ставит нумерацию правильно, по количеству строк. Но когда я удаляю строку, он мне меняет номер только последней строки, а остальные остаются такие же. Последнюю удаляет ровно на столько, сколько строк осталось. То есть, было 6 строк. Удалил вторую, нумерация остается 1,3,4,5 а номер 6 становиться 2. А надо что бы все строки ниже удаляемой уменьшались на 1. Вот мой код отработки кнопки.
    ExpandedWrap disabled
      add_to.setOnClickListener(new View.OnClickListener() {
                      @Override
                      public void onClick(View v) {
                          if (!TextUtils.isEmpty(personal_account.getText().toString()) && !TextUtils.isEmpty(surname_child.getText().toString()) && !TextUtils.isEmpty(name_child.getText().toString()) &&
                                  !TextUtils.isEmpty(patronymic_child.getText().toString())) {
                              TableLayout tableLayout = (TableLayout) findViewById(R.id.table_children);
                              LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
                              TableRow tr = (TableRow) inflater.inflate(R.layout.table_row_plus, null);
                              number = (TextView) tr.findViewById(R.id.number);
       
                              //нумерации строк при добавлении строки
       
                              int aInt = table_children.getChildCount();
                              for (int m = 0; m < aInt; m++) {
                                  String aString = Integer.toString(m + 1);
                                  number.setText(aString);
                              }
       
                              fio_child = (TextView) tr.findViewById(R.id.fio_child);
                              String tv1 = surname_child.getText().toString();
                              String tv2 = name_child.getText().toString();
                              String tv3 = patronymic_child.getText().toString();
                              Value1 = tv1 + " " + tv2 + " " + tv3;
                              fio_child.setText(Value1);
                              number_lc = (TextView) tr.findViewById(R.id.number_lc);
                              String tv4 = personal_account.getText().toString();
                              number_lc.setText(tv4);
       
                              //переопределяем ImageView, которые появляются со строками
                              ImageView markOfTheRow = tr.findViewById(R.id.mark);
                              markOfTheRow.setOnClickListener(new View.OnClickListener() {
                                  @Override
                                  public void onClick(View v) {
       
                                      final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                                      String myFio_child;
                                      TableRow tr = (TableRow)v.getParent();
                                      TextView reb = (TextView) tr.getChildAt(1);
                                      myFio_child = reb.getText().toString();
                                      builder.setMessage("Удалить: " + myFio_child + " ?");
                                      builder.setCancelable(true);
                                      builder.setNegativeButton("нет", new DialogInterface.OnClickListener() {
                                          @Override
                                          public void onClick(DialogInterface dialog, int which) {
                                              dialog.cancel();
                                          }
                                      });
                                      builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
                                          @Override
                                          public void onClick(DialogInterface dialog, int which) {
                                              tableLayout.removeView(tr);
                                              Toast.makeText(getApplicationContext(), "Ребенок удалён", Toast.LENGTH_SHORT).show();
       
                                              //нумерация строк при удалении строки
                                              for (int m = 0; m < (aInt - 1); m++) {
                                                  String aString = Integer.toString(m + 1);
                                                  number.setText(aString);
                                              }
       
                                          }
                                      });
                                      AlertDialog alertDialog = builder.create();
                                      alertDialog.show();
       
                                  }
                              });
                              
                              tableLayout.addView(tr);
                              dialog.dismiss();
       
                              Toast.makeText(getApplicationContext(), "Ребенок добавлен", Toast.LENGTH_SHORT).show();
       
                          } else {
                              Toast.makeText(getApplicationContext(), "Заполните все поля", Toast.LENGTH_SHORT).show();
                          }
       
                      }
       
                  });
      единственное, чего добился это:
      ExpandedWrap disabled
            int aInt = table_children.getChildCount();
            String aString = Integer.toString(aInt - 1);
            number.setText(aString);

      уменьшает цифру последней созданной строки. А мне надо что бы во всех строках менял цифры.
      Я не прошу готовый код, подскажите куда копать. Может я просто не понимаю куда двигать.
      Пробовал циклом for, но он тоже менял номер последней строки.
      Напишите алгоритм движения.
      И еще вопрос. Мне нужно выстраивать один столбец по алфавиту.
      Я правильно мыслю, сначала загнать таблицу в SQLite, затем вытаскивать столбец и сортировать его?
        Это архив который можно запустить и посмотреть.

        Добавлено
        Цитата Vashnaemnik @

        А как выкладывать архив? Пишет что превышен лимит по размеру.
          Выложи на яндекс/гугл диск, ссылку сюда.
            Выложил код на яндекс диске
            https://yadi.sk/d/q_ZsikZzxbazWQ
              Удаляешь ты строку в объекте tableLayout,
              ExpandedWrap disabled
                tableLayout.removeView(tr);
                Toast.makeText(getApplicationContext(), "Ребенок удалён", Toast.LENGTH_SHORT).show();

              а нумерацию пытаешься менять в объекте number который не изменился.
              ExpandedWrap disabled
                                                        //изменение нумерации при удалении строки
                                                        int aInt = table_children.getChildCount();
                                                        for (int m = 0; m < aInt; m++) {
                                                            String aString = Integer.toString(aInt - 1);
                                                            number.setText(aString);
                                                        }

              Зачем ты ребёнков удаляешь, изувер. :lol:

              Добавлено
              Цитата Vashnaemnik @
              уменьшает цифру последней созданной строки.

              Потому что экземпляр класса TextView создаётся в момент нажатия кнопки "Добавить" и циклом
              ExpandedWrap disabled
                                                        for (int m = 0; m < aInt; m++) {
                                                            String aString = Integer.toString(aInt - 1);
                                                            number.setText(aString);
                                                        }

              Ты просто m раз меняешь надпись в последней добавленной строке. Судя по коду, писал методом тыка, не особо понимая что и зачем. В общем подтяни ООП.

              Добавлено
              Цитата Vashnaemnik @
              Я правильно мыслю, сначала загнать ...

              Не правильно. Отложи в сторону android studio и полистай или погугли ООП(объектно-ориентированное программирование),
              Сообщение отредактировано: Gonarh -
                Цитата Gonarh @
                Удаляешь ты строку в объекте tableLayout,
                ExpandedWrap disabled
                  tableLayout.removeView(tr);
                  Toast.makeText(getApplicationContext(), "Ребенок удалён", Toast.LENGTH_SHORT).show();

                а нумерацию пытаешься менять в объекте number который не изменился.
                ExpandedWrap disabled
                                                          //изменение нумерации при удалении строки
                                                          int aInt = table_children.getChildCount();
                                                          for (int m = 0; m < aInt; m++) {
                                                              String aString = Integer.toString(aInt - 1);
                                                              number.setText(aString);
                                                          }

                Зачем ты ребёнков удаляешь, изувер. :lol:

                Добавлено
                Цитата Vashnaemnik @
                уменьшает цифру последней созданной строки.

                Потому что экземпляр класса TextView создаётся в момент нажатия кнопки "Добавить" и циклом
                ExpandedWrap disabled
                                                          for (int m = 0; m < aInt; m++) {
                                                              String aString = Integer.toString(aInt - 1);
                                                              number.setText(aString);
                                                          }

                Ты просто m раз меняешь надпись в последней добавленной строке. Судя по коду, писал методом тыка, не особо понимая что и зачем. В общем подтяни ООП.

                Добавлено
                Цитата Vashnaemnik @
                Я правильно мыслю, сначала загнать ...

                Не правильно. Отложи в сторону android studio и полистай или погугли ООП(объектно-ориентированное программирование),

                Спасибо :D я знаю про свой косяк безграмотности в сфере ООП. Спасибо, разложили, все мои косяки по полкам :lol: но жить мне легче от этого не стало :tong:

                Добавлено
                Цитата Gonarh @
                а нумерацию пытаешься менять в объекте number который не изменился.

                А почему не изменился? Разве number не входит в ту же строку? Она составная строки, и удаляется вместе с ней.
                  Цитата Vashnaemnik @
                  А почему не изменился? Разве number не входит в ту же строку?

                  Ещё раз. Объект number ты определяешь в момент добавления строки. Т.е. это, грубо говоря, ссылка на номер в самой последней строке. Соответственно в момент удаления ты обращаешься к этому объекту - номеру в самой последней строке

                  Добавлено
                  Мне не жалко, вот тебе ведро с рыбой. Пользуйся. Только придёшь в следующий раз, и попросишь сделать за тебя, а не указать направление - помощи не жди.
                  ExpandedWrap disabled
                                                        public void onClick(DialogInterface dialog, int which) {
                                                            tableLayout.removeView(tr);
                                                            Toast.makeText(getApplicationContext(), "Ребенок удалён", Toast.LENGTH_SHORT).show();
                                                            int aInt = tableLayout.getChildCount();
                                                            for (int m = 1; m < aInt; m++) {
                                                                TableRow tr = (TableRow)tableLayout.getChildAt(m);
                                                                TextView number = (TextView) tr.getChildAt(0);
                                                                number.setText(String.valueOf(m));
                                                            }
                                                        }
                  Сообщение отредактировано: Gonarh -
                    Если ищешь знаний про Android-разработку или ООП, рекомендую сюда и сюда
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0813 ]   [ 15 queries used ]   [ Generated: 19.04.24, 00:43 GMT ]