2010-12-14 13 views
0

現在、大きなデータセットを「レジスタ」と行に表示するアプリケーションを開発中です。 TableLayoutをベースビューとして使用し、すべてのアイテム(各行にLinearLayoutを持つ)にテーブル行を追加しています。ビューが表示にスクロールしたときを知る方法

レコードの量が一定のポイント(1000+レコード)を超えると、デバイスが大幅に減速することに気付きました。私はこれが単純なメモリの問題(おそらくレンダリングもあるでしょうか?)であると確信しており、速度を上げる可能性のある計画を考案しました。

私たちは多くのSilverlightプロジェクトで連続ページングを実装しましたが、これがAndroidで取るには最良の方法だと思いますか?

私が今抱えている唯一の問題は、特定のビュー(行100など)がスクロールされてビューに表示されたときを認識して、次の数行のレンダリングを開始できることです。

これを行う方法、または大きなデータセットを実装/処理するためのより良い方法を知っている人はいますか?代わりに、行を再利用する能力を有するテーブルレイアウト使用CustomListViewを使用

よろしく

答えて

0

ここでカスタムリストビューの使い方を見つけることができます。

[Custom ListView][1] 
+0

ありがとうございます!おそらくあなたが話したリンクを提供することができますか? :D – Renier

+0

http://www.androidpeople.com/android-custom-listview-tutorial-example-part-2/ – Kakey

0

ビューにonScrollListenerを追加するだけです。 ListViewを使用してデータを表示すること

次のコードから、現在のビューのインデックスを取得できます。

ListView.OnScrollListenerは、実装する必要があり、本体を
の2つの方法にするために必要なインターフェイスです。

listView.setOnScrollListener(新しいListView.OnScrollListener(){

公共ボイドonScroll(AbsListViewビュー、INT firstVisibleItem、INT visibleItemCount、 INT totalItemCount){}

public void onScrollStateChanged(AbsListView view, int scrollState) { 
     switch (scrollState) { 
     case OnScrollListener.SCROLL_STATE_IDLE: 
      mBusy = false; 

      int first = view.getFirstVisiblePosition(); 
      int count = view.getChildCount(); 


      break; 
     case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL: 

      break; 
     case OnScrollListener.SCROLL_STATE_FLING: 



      break; 

     } 
    } 

})。

最初の値を印刷してみますと、それはあなたのproblem.Hopefullyを解決する変数を数える:)

+0

SlowAdapterとEfficientAdapterのコードをすばやく試してみましょう – Javanator

関連する問題