Intereting Posts
Исключение из списка репликации Android RecyclerView LayoutManager Android Нажмите LongClickListener, чтобы получить координаты X, Y, OnTouchListener InflateException, потому что Fragment не создал представление Как перечислить действия, которые соответствуют намерению? Android: опрос сервера с помощью дооснащения Динамический пользовательский интерфейс Описание SURF быстрее с обнаружением FAST? Android-приложение для биллинга, как обрабатывать приложения Android: Multithreading-Bluetooth SPP / RFCOMM-Как сохранить мой BluetoothSocket и OutputStream активными при изменении действий Проблема с совместимостью видео: записанное видео на Android не воспроизводится в iphone Как получить значение измерения, которое является ссылкой на атрибут? RXJava, как попытаться получить следующее после x времени Как исправить «Избегайте передачи null в качестве корня представления» в android? Копировать код между фрагментами Nativescript-sqlite и модуль angular2 не найдены исключение

Событие onScroll не запускается для listview

Я разрабатываю приложение, где мне нужно показать некоторый элемент управления списком. Я просто OnScrollListener в свою деятельность, чтобы контролировать свой контент listview, но он не вызывает событие onScroll, когда я устанавливаю макет для своей деятельности. Если я прокомментирую этот блок, он вызывает его просто отлично. Как решить эту проблему?

 package com.Threadtest; import com.Threadtest.main.myRunnable; import android.app.Activity; import android.app.ListActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.AbsListView.OnScrollListener; public class TestList extends ListActivity implements OnScrollListener { Aleph0 adapter = new Aleph0(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); ListView listview=(ListView)findViewById(android.R.id.list); listview.setAdapter(adapter); /*setListAdapter(adapter); getListView().setOnScrollListener(this);*/ } public void onScroll(AbsListView view, int firstVisible, final int visibleCount, int totalCount) { Log.i("TestList", "firstVisible="+firstVisible+" visibleCount="+visibleCount+" totalCount="+totalCount); boolean loadMore = /* maybe add a padding */ firstVisible + visibleCount >= totalCount; if(loadMore) { Log.i("TestList", "In Notify"); Thread thread = new Thread() { @Override public void run() { try { this.sleep(10000); runOnUiThread(new myRunnable(adapter,visibleCount)); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; thread.start(); } } public void onScrollStateChanged(AbsListView v, int s) { } class myRunnable implements Runnable { Aleph0 adapter; public myRunnable(Aleph0 adapter,int visibleCount) { this.adapter=adapter; this.adapter.count += visibleCount; } public void run() { // TODO Auto-generated method stub Log.i("TestList", "List Count="+adapter.count); adapter.notifyDataSetChanged(); } } class Aleph0 extends BaseAdapter { int count = 40; /* starting amount */ public int getCount() { return count; } public Object getItem(int pos) { return pos; } public long getItemId(int pos) { return pos; } public View getView(int pos, View v, ViewGroup p) { if(pos!=count-1) { TextView view = new TextView(TestList.this); view.setText("entry " + pos); return view; } TextView view = new TextView(TestList.this); view.setText("Loading.. " + pos); return view; } } } 

getListView().setOnScrollListener(this) необходим для привязки слушателя к ListView . Класс ListActivity не обеспечивает «автоматический» способ привязки большей части слушателей, он предоставляет только автоматический способ привязки OnItemClickListener . Проверьте код ListActivity .

Если вы измените свою подпись onScroll на public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) будет ли оно public void onScroll(AbsListView view, int firstVisible, int visibleCount, int totalCount) ? Добавив final квалификатор, вы изменили подпись метода, и это приведет к тому, что ваш переопределенный метод не будет отображаться. Скопируйте visibleCount int в новый (окончательный) int, чтобы вы могли получить к нему доступ в своем потоке.

 import android.widget.AbsListView.OnScrollListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); ListView listview=(ListView)findViewById(android.R.id.list); listview.setAdapter(adapter); listview.setOnScrollListener(onLstScroll); } OnScrollListener onLstScroll= new OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //Do something } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //Do something } }; 

Вам не хватает нотации @Override в onScroll() и onScrollStateChanged() .