Android分页GridView/ListView?
Android paging GridView/ListView?
我正在寻找一个库或一些帮助来解决一些代码问题。我需要一个 GridView 或 ListView,其行为类似于 ViewPager,但会在每次滑动时显示尽可能多的项目。基本上,如果我有 300 个项目,并且一次只能显示 5 个,我希望能够向下滑动并显示 5 个,然后在下一次滑动时显示下一个 5 个。我确信这是可能的,但我该如何开始?
在您的 ListView 中,使用 setOnScrollListener
class 设置滚动侦听器。然后,在您的滚动侦听器中,处理方法 onScroll
:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// ...
}
请注意,您有参数来确定用户是否已滚动到底部 - 如果是,请加载下一页项目并将它们添加到您的适配器。
我找到了解决方案:
基本上,我设置了一个普通的 GridView(包含约 300 个项目)并在您单击它时以编程方式滚动。我不得不使用 OnItemClick,因为您不能将常规的 OnClick 侦听器与 AdapterView(GridView、ListView 等)一起使用
View.OnTouchListener gridDisableScroll = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
return true;
}
return false;
}
};
AdapterView.OnItemClickListener gridClickScroll = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(((GridView)adapterView).getLastVisiblePosition()
== adapterView.getAdapter().getCount()-1) {
//if you're at the bottom, scroll to the top!
((GridView)adapterView).smoothScrollToPosition(0);
} else {
//scroll down the distance of the height of the GridView
((GridView) adapterView).smoothScrollBy(adapterView.getMeasuredHeight(), 700);//700ms
//may not be necessary...force draw after scrolling
adapterView.invalidate();
}
}
};
我正在寻找一个库或一些帮助来解决一些代码问题。我需要一个 GridView 或 ListView,其行为类似于 ViewPager,但会在每次滑动时显示尽可能多的项目。基本上,如果我有 300 个项目,并且一次只能显示 5 个,我希望能够向下滑动并显示 5 个,然后在下一次滑动时显示下一个 5 个。我确信这是可能的,但我该如何开始?
在您的 ListView 中,使用 setOnScrollListener
class 设置滚动侦听器。然后,在您的滚动侦听器中,处理方法 onScroll
:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
// ...
}
请注意,您有参数来确定用户是否已滚动到底部 - 如果是,请加载下一页项目并将它们添加到您的适配器。
我找到了解决方案:
基本上,我设置了一个普通的 GridView(包含约 300 个项目)并在您单击它时以编程方式滚动。我不得不使用 OnItemClick,因为您不能将常规的 OnClick 侦听器与 AdapterView(GridView、ListView 等)一起使用
View.OnTouchListener gridDisableScroll = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_MOVE){
return true;
}
return false;
}
};
AdapterView.OnItemClickListener gridClickScroll = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if(((GridView)adapterView).getLastVisiblePosition()
== adapterView.getAdapter().getCount()-1) {
//if you're at the bottom, scroll to the top!
((GridView)adapterView).smoothScrollToPosition(0);
} else {
//scroll down the distance of the height of the GridView
((GridView) adapterView).smoothScrollBy(adapterView.getMeasuredHeight(), 700);//700ms
//may not be necessary...force draw after scrolling
adapterView.invalidate();
}
}
};