Как узнать конкретный дочерний индекс после добавления большего количества детей? - PullRequest
0 голосов
/ 13 октября 2019

У меня есть пользовательский макет с именем TinderStackLayout, который имеет 3 дочерних вида.

Я запускаю функцию, которая добавляет больше подпредставлений в последнюю позицию и удаляет из первой позиции.

Мне нужен способ отслеживать ребенка, который в данный момент представлен.

Вот мой код для моего пользовательского макета стека -

public class TinderStackLayout extends FrameLayout {

  //Constructors
  public TinderStackLayout(Context context) {
    super(context);
    init();
  }

  public TinderStackLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
  }

  public TinderStackLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
  }

  @Override
  public void onDetachedFromWindow() {
    super.onDetachedFromWindow();
  }

  // Helper Methods
  private void init() {
    setClipChildren(false);

  }

  public void addCard(TinderCardView tinderCardView, int addToPosition) {
    View lastCardAdded = getChildAt(0);
    if (lastCardAdded != null && lastCardAdded.equals(tinderCardView)) {
      return;
    }

    ViewGroup.LayoutParams layoutParams;
    layoutParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    addView(tinderCardView, addToPosition, layoutParams);

//    tinderCardView.animate()
//        .x(0)
//        .setInterpolator(new AnticipateOvershootInterpolator());
  }

  public TinderCardView getTopCardOnStack() {
    return (TinderCardView) getChildAt(getChildCount() - 1);
  }
}

Как вы можете видеть, я пытался сделать return (TinderCardView) getChildAt(getChildCount() - 1), но это неправильно, когда я добавляю больше подпредставлений, потому что я никогда не будуполучить более 2 карт таким образом.

Есть ли способ, которым я всегда могу узнать, какой ребенок в данный момент представлен в интерфейсе?

...