0

私のリストにはバスのスケジュールが含まれています。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);
            }
        });
4

1 に答える 1