Событие 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; } } } 

Solutions Collecting From Web of "Событие onScroll не запускается для listview"

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() .