0

リストビューの行内の既知のオブジェクトにリストをスクロールしようとしています。問題は、内部に含まれているオブジェクトがわかっている場合、その位置を取得する方法がわからないことです。

問題の一部は、MergeAdapterヘッダーとサブヘッダーを含むリストに (Commonsware) を使用することです。

どうすればこれを達成できるかについてのヒントはありますか?

これは私の編集されたソリューションです

folder_list.setAdapter(all_adapter);
        if (itemToBeSynced != null) {
            int skip = 0;

            for(int i=0;i<all_adapter.getCount();i++){
                if(all_adapter.getItem(i)!=null && all_adapter.getItem(i) instanceof MileageReceiptInterface){
                    if(all_adapter.getItem(i).equals(itemToBeSynced)){
                        skip = i;
                        break;
                    }
                }
            }

            final int finalSkip = skip;
            folder_list.post(new Runnable() {
                @Override
                public void run() {
                    folder_list.smoothScrollToPosition(finalSkip);
                }
            });
        }
4

1 に答える 1

1

しかし、この行のクラスキャスト例外が発生します

この行では考慮されていない「ヘッダーとサブヘッダー」があることを示しました。instanceof演算子を使用して、返されたアダプターが であるかどうかを確認SyncItemAdapterし、そうである場合にのみ、キャストとループのこのパスの残りの部分を続行します。

または、ネストされたループを完全にスキップします。呼び出しgetCount()all_adapter、それを繰り返します。パスごとに、 を介して N 番目のアイテムを取得しますgetItem()。それが ではなくnullである場合instanceof MileageReceiptInterfaceは、equals()チェックを行ってください。

于 2013-11-07T12:00:52.780 に答える