2

私はリストビューを持っており、要件はリストを実用的にスクロールすることです。

私はこれを使用しています。

 // allClues.setSelection(clueIndex +1 );
 //allClues.setSelectionFromTop(clueIndex+1, rowWidth*noOfrows /2 + 50);

allClues.smoothScrollToPosition(clueIndex +1 );
allClues.invalidateViews();

onItemClickListener があります

listView.setOnItemClickListener(new OnItemClickListener() {
          @Override
          public void onItemClick(AdapterView<?> parent, View view,
          int position, long id) {



             ItemAdapter.selectedItem = position;

            view.setSelected(true);

            ((AbsListView) parent).invalidateViews();

            puzzle.setSelected(position);


          }
        }); 
    }

SmoothScrolltoPosition は正常に機能していますが、リストが長く、頻繁にスクロールされるため、見栄えがよくありません。

setSelection を使用して特定のアイテムを一番上に配置し、setSelectionFromTop を使用している場合、何も起こりません。SmoothScrolltoPosition が完全に機能しているため、これら 2 つのメソッドには事前条件が必要ですか。

4

2 に答える 2

2

これはうまくいきました -

        allClues.post(new Runnable() {            
                public void run() {
                    allClues.setSelection(ind);

                }
            }); 
于 2013-08-14T06:39:59.443 に答える
0

setSelectionFromTop(..)動作するはずです。ドキュメントが言うように: http://developer.android.com/reference/android/widget/ListView.html#setSelectionFromTop%28int,%20int%29

public void setSelectionFromTop (int position, int y)

パラメータ position 選択するデータ項目のインデックス (0 から始まる)。y 項目が配置される ListView の上端からの距離 (およびパディング)。

したがって、おそらく間違った使い方をしているでしょう。最初のパラメーターは、リストをスクロールする位置を意味するものではありません。

于 2013-02-05T20:12:27.770 に答える