2015-10-22 3 views
0



При прокрутке списка, я хочу получить текущий вид, который имеет текстовое изображение и изображение.
Основываясь на этом, я хочу показать начальную букву первого элемента видимого контакта в списке, аналогичном нашему списку контактов.
Я пробовал со следующим, но это дает недопустимый индекс после прокрутки.Как получить текущий элемент в представлении списка после прокрутки

HomeContactView extends AppCompatActivity implements AbsListView.OnScrollListener 

overided соответствующие методы

@Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
final ListView listView = mainListView; 
     int location = listView.getFirstVisiblePosition(); 
} 

Благодаря этому я не могу получить текущий сфокусированный взгляд и его elements.How для достижения этой цели? Любая помощь действительно заметна.
enter image description here

+0

Не могли бы вы показать мне, какой код дает недопустимый индекс? – HendraWD

+1

https://www.google.com.ua/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=android%20sticky%20listview%20header&es_th=1 или https://www.google .com.ua/webhp? sourceid = chrome-instant & ion = 1 & espv = 2 & es_th = 1 & ie = UTF-8 # q = android + listview + header –

+0

@ Vlad Matvienko: Спасибо за ввод. Эта библиотека работала. Как насчет возможности включить их в просмотр Recycler? – Stallion

ответ

1

Я думаю, что ваш код близок к правильному. Я бы использовал текущий параметр view и придумал его. И я проверяю статус прокрутки (параметр scrollState). Вы хотите избежать обработки ListView, когда пользователь все еще прокручивает.

Пример кода:

@Override 
    public void onScrollStateChanged(AbsListView view, int scrollState) { 
     if (scrollState == SCROLL_STATE_IDLE) { 
      final ListView listView = (ListView) view; 
      int location = listView.getFirstVisiblePosition(); 

      View firstView = listview.getChildAt(location); 
     } 
    } 

Вы также можете переопределить другой метод, public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount). Преимущество этого метода состоит в том, что вы можете получить firstVisibleItem как целочисленный тип. Я использовал его, и это точный.

+1

Я пробовал со ссылками, предложенными Владом Матвиенко, но в списках, которые реализуют динамический рендеринг изображений, разбивает библиотеку. В противном случае StickyHeaderListView совершенен. Так, как и в Android, я снова попытался, и он сработал. Всем спасибо – Stallion

1

Почему вы не используете метод getFocusedChild() RecyclerView/ListView? Метод будет работать только если пользователь фокусирования мнение о

Другой способ, вы можете сделать

View v = listview.getChildAt(listview.getFirstVisiblePosition()); 
String firstLetter = ((TextView)v.findViewById(R.id.textview)).getText().toString().substring(0,1); 
+0

Я пробовал со следующим. Теперь он дает исключение после нескольких свитков. – Stallion

+0

@Override общественности недействительным onScrollStateChanged (вид AbsListView, внутр scrollState) { если (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) { попробовать { Посмотреть convertView = mainListView.getChildAt (mainListView.getFirstVisiblePosition()); TextView txtView = (TextView) convertView.findViewById (R.id.textViewMain); Log.v (AppConstants.APPUILOG, "TextView text" + txtView.GetText()); } catch (Исключение e) { Log.e (AppConstants.APPUILOG, "Ex =" + e.toString()); } } – Stallion

1

Вы можете взять первую строку с помощью getChildAt metgod:

View convertView = listview.getChildAt(listview.getFirstVisiblePosition()); 

И чем вы можете найти ваш объекты с преобразованным видом, например:

convertView.findRbyID(R.id.textview) 

Но рекомендуется использовать `Recycle rView ...

 Смежные вопросы

  • Нет связанных вопросов^_^