HorizontalListView 中 setSelection()一种简单实现方式
1.在HorizontalListView类重写setSelection方法:
@Override
public void setSelection(int position) {
//TODO: implement
int positionX = position*this.getWidth();
int maxWidth = this.getChildCount()*this.getWidth();
if(positionX <=0){
positionX = 0;
}
if(positionX >maxWidth){
positionX =maxWidth;
}
scrollTo(positionX );
}
2.在布局中加上两条属性:
<com.huang.view.HorizontalListView
android:id="@+id/specialPriceHorListview"
android:layout_width="0dip"
android:layout_height="30dip"
android:layout_weight="8"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll" />
3.在JAVA代码中调用:
hListView.setSelection( hList.size()-1 );//点击后跳转到最后一行
如果还是不能的话。只能这样子做了。
@Override
public void setSelection(int position) {
int positionX = position*this.getWidth();
int maxWidth = this.getChildCount()*this.getWidth();
System.out.println("positionX+maxWidth"+positionX+"--"+maxWidth);
// if(positionX <=0){
// positionX = 0;
// }
// if(positionX >maxWidth){
// positionX =maxWidth;
// }
// scrollTo(positionX );
if (MyUtils.width * position < maxWidth || MyUtils.width * position == maxWidth) {
scrollTo(MyUtils.width * position);
}
}
private int scrollToPosition = 1;//用于记录滚动的位置 1开始
if (scrollToPosition < 4) {
hListView.setSelection( scrollToPosition );//用于设置滚动的位置
scrollToPosition ++;
}else {
scrollToPosition = 1;//返回第一个
}
因为我的屏幕是720*1680吧。滚动640不行,滚动720的倍数就行了。