В android ListView, как я могу выполнять итерации/управлять всех дочерних представлений, не только видимых?

Код ниже НЕ изменяет текст всех a ListView's строки, потому что getChildCount() не получает все a ListView's строки, но просто строки, которые видимы.

for (int i = 0; i < listView.getChildCount(); i++)
{
    View v = listView.getChildAt(i);
    TextView tx = (TextView) v.findViewById(R.id.mytext);
    tx.setTextSize(newTextSize);
}

Так, что я ДОЛЖЕН сделать?

Есть ли код для получения уведомления когда a ListView's строка становится видимой, таким образом, я могу установить ее размер текста затем?

10
задан Cœur 26 July 2017 в 12:01
поделиться

2 ответа

List13 Демона API делает что-то похожее на использование OnscrollStateChanged. Может быть лучше, хотя:

public void onScrollStateChanged(AbsListView view, int scrollState) {
    switch (scrollState) {
    case OnScrollListener.SCROLL_STATE_IDLE:
        mBusy = false;

        int first = view.getFirstVisiblePosition();
        int count = view.getChildCount();
        for (int i=0; i<count; i++) {
            TextView t = (TextView)view.getChildAt(i);
            if (t.getTag() != null) {
                t.setText(mStrings[first + i]);
                t.setTag(null);
            }
        }

        mStatus.setText("Idle");
        break;

. Отказ Отказ

Редактировать COREY TRAGER:

Вышеуказанное определенно указал меня в правильном направлении. Я нашел обработку onscrolllistener.onscrolle, работал лучше, чем onscrollStateChanged. Даже если я удалил оператор корпуса в OnscrollsgataChanceeded и обрабатывал каждое изменение состояния, какой текст не был изменен. Но с нанесением, кажется, вещи, кажется, работают.

Итак, мой, казалось бы, рабочий код выглядит так:

public void onScroll(AbsListView v, int firstVisibleItem, int visibleCount, int totalItemCount)
{
    ListView lv = this.getListView();
    int childCount = lv.getChildCount();

    for (int i = 0; i < childCount; i++)
    {
        View v = lv.getChildAt(i);
        TextView tx = (TextView) v.findViewById(R.id.mytext);
        tx.setTextSize(textSize);
    }
}
9
ответ дан 3 December 2019 в 16:52
поделиться

В списке единственные дети являются видимыми. Если вы хотите что-то сделать с «всеми детьми», сделайте это в адаптере. Это лучшее место.

15
ответ дан 3 December 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: