Это сработало для меня:

за каждую запись вTextSwitcher должно отображать первое значение (ListViewtext1) и затем другое значение (text2), затем сначала значение снова и так далее. Это должно произойти, только еслиtext2 не пустой. В противном случаеtext1 должен быть всегда показан (без каких-либо изменений и анимации).Я создал

, который изменяет логическую переменную (Runnable()time2) чтобы потом позвонить, Работает как положено и как результатitems.notifyDataSetChanged() для меняsetViewValue() называется.ListViewВот код:

Это работает почти так, как ожидалось. С одним второстепенным предметом - когда

items.setViewBinder(new SimpleCursorAdapter.ViewBinder() {

    @Override
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
      int viewId = view.getId();
      switch(viewId) {
      case R.id.timetext:
          TextSwitcher itemTime = (TextSwitcher) view;
          if (itemTime.getChildCount() != 2) {
              itemTime.removeAllViews();
              itemTime.setFactory(new ViewSwitcher.ViewFactory() {
                  @Override
                  public View makeView() {
                      TextView t = new TextView(MyActivity.this);
                      t.setTextSize(18);
                      t.setTypeface(null, Typeface.BOLD);
                      t.setTextColor(Color.WHITE);
                      return t;
                    }
                  });
              itemTime.setAnimateFirstView(true);
              itemTime.setInAnimation(AnimationUtils.loadAnimation(MyActivity.this,
                      R.anim.push_up_in));
              itemTime.setOutAnimation(AnimationUtils.loadAnimation(MyActivity.this,
                      R.anim.push_up_out));
          }

          if (!text2.equals("")) {
              if (!time2) {
                  itemTime.setText(text1);
              } else {
                  itemTime.setText(text2);
              }
          } else {
                      itemTime.setCurrentText(text1);
              }
          return true;
      } 
      return false;
    }
  } );

text2 должен отображаться, сначала он изменяет отображаемое значение на какое-то другое значение (из другой записи!), а затем воспроизводится анимация. Сменаtext2 вtext1 происходит правильно.Я понимаю, что причина заключается в следующем - перед отображением

text2, все виды удаляются и, следовательно, воссоздаются, и поэтому на секунду показывается какое-то другое значение. Но почему он показывает ценность какой-то другой записи?itemTimeФактически

text2 а такжеtext1 значения из базы данных, напримернаверное, тут что-то не так иtext2 = cursor.getString(cursor.getColumnIndexOrThrow(DbAdapter.KEY_TIME_2)) вызывается с неверными параметрами?setViewValueUpd.

text1 а такжеtext2 читаются из базы данных на, Вот пример полного кода:setViewValueЯ думаю, что вижу, что здесь происходит, и это из-за того, как работает ListView.

itemTime.setText(cursor.getString(cursor.getColumnIndexOrThrow(DbAdapter.KEY_CLOSE_TIME_1)) + " - " + cursor.getString(cursor.getColumnIndexOrThrow(DbAdapter.KEY_OPEN_TIME_1)));

Ответы на вопрос(4)

Ваш ответ на вопрос