私のリストにはバスのスケジュールが含まれています。SmoothScroll を使用して、現地時間に従って次のスケジュールまでリストをスクロールしたい。リストが40項目もあり、次の予定がどの位置にあるのかわからないこともあります。このアイテムの位置を知り、SmoothScroll を使用するにはどうすればよいですか?
必要であれば、詳細をお知らせします。
編集2:
私はこれを試しました:
このメソッドをオーバーライドするカスタム アダプター:
public int nextTimePosition;
@Override
public int getItemViewType(int position) {
String item = getItem(position);
return (item.equalsIgnoreCase(nextTime)) ? CHANGE_BACKGROUND : TYPE_ITEM_NORMAL;
}
item が nextTime に等しい場合、位置を保存して listView クラスに取得し、smoothscroll を設定しましたが、成功しませんでした
編集3:
SimonSays の助けを借りてこれを解決しました。
list.post() の前に、次のスケジュールを変数に取り込むクエリを作成し、以下のコードを使用してスクロールします
次のスケジュールを見つけたとき、smoothScrollToPosition メソッドは停止しました。でもスケジュールをリストの中央に配置したいので、少し調整しました。
今後の参考のために次のとおりです。
lvUtil.post(new Runnable() {
@Override
public void run() {
int visibleChildCount = (lvUtil.getLastVisiblePosition() - lvUtil.getFirstVisiblePosition()) + 1;
int finalIndex = uteis.indexOf(getNext()) + (int) Math.floor((visibleChildCount / 2));
lvUtil.smoothScrollToPosition(finalIndex);
}
});