我正在開發一個應用程序,我需要顯示一些列表視圖控件。我只是在我的活動中實現了OnScrollListener
,以便監視我的listview內容,但是當我爲我的活動設置佈局時,它不會調用onScroll事件。如果我評論該塊,那麼它調用它就好了。我該如何解決這個問題?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)',它不起作用? – dmon 2011-06-15 12:36:00
是的。如果一個Ommit的getListView()。setOnScrollListener(this)它不會被解僱。 – ram 2011-06-15 12:45:37
對,如果你省略了監聽器,它不會觸發。什麼是真正的問題,**你想在沒有設置監聽器的情況下觸發?** – 2011-06-15 12:56:27