Код ниже НЕ изменяет текст всех 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
строка становится видимой, таким образом, я могу установить ее размер текста затем?
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);
}
}
В списке единственные дети являются видимыми. Если вы хотите что-то сделать с «всеми детьми», сделайте это в адаптере. Это лучшее место.