gpt4 book ai didi

android - onScroll 事件未针对 ListView 触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:31 24 4
gpt4 key购买 nike

我正在开发一个应用程序,我需要在其中显示一些 ListView 控件。我只是在我的 Activity 中实现 OnScrollListener 以监视我的 ListView 内容,但是当我为我的 Activity 设置布局时它没有调用 onScroll 事件。如果我评论那个 block 然后它调用它就好了。我该如何解决这个问题?

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) 是将监听器绑定(bind)到 ListView 所必需的。 ListActivity 类不提供绑定(bind)大多数监听器的“自动”方式,它仅提供绑定(bind) OnItemClickListener 的自动方式。查看ListActivity code .

关于android - onScroll 事件未针对 ListView 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357624/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com