У меня есть listview, и я переопределяю событие onScroll для него, чтобы я мог получить первый символ текста в первом видимом элементе списка. Мой код выглядит следующим образом:Некоторые элементы имеют значение null в listview onScroll метод
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
//
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
ListView caller = (ListView) view;
View v = caller.getChildAt(firstVisibleItem);
if(v instanceof TextView){
TextView tv = (TextView) v;
if(tv != null){
String sInitial = tv.getText().toString();
sInitial = Character.toString(sInitial.charAt(0));
TextView tvPager = (TextView) findViewById(R.id.tvPager);
tvPager.setText(sInitial);
}
}
}
Когда переменная FirstVisibleItem от 0 до 12 (если быть точным), на мой взгляд v не равно нулю, и я могу получить текст этого. Но когда он выходит за пределы 12, мой v уже равен нулю. Мои элементы более чем 12, поэтому он не должен быть нулевым.
С кодом нет в коде? Или есть лучший способ делать то, что я хочу? Спасибо заранее!
да .. но firstVisibleItem должен быть видимым право? И я получаю текущий вид из firstVisibleItem. – junmats
Это первая видимая позиция вашего адаптера. Он соответствует дочернему индексу 0 в ListView. –
У вас есть идея о том, как выполнить то, что мне нужно? Благодаря.. – junmats