2

こんにちは、この特定のシナリオの実装について確信が持てません。いくつかの提案が必要です。私はリストビューを持っていて、サーバー呼び出しを行うことでそれを更新します。データ量が少ない場合は高速ですが、5000 レコードあるとどうなりますか? それらをメモリまたはデータベースにロードしてから、クエリを実行してリストビューを更新する必要がありますか? これのベストプラクティスは何ですか?

データをダウンロードしていて、突然ネットワーク ドロップが発生したとします。次に、データを処理してリストビューを更新するにはどうすればよいですか?

4

2 に答える 2

1

5,000 件のレコードについてはわかりませんが、ListView は、効果的なリサイクル メカニズムを使用して多数のレコードを適切に処理できることが知られています。詳細な説明については、このスレッドを参照してください。

さて、ネットワーク リソースの読み込みにVolleyを使用してください。リストへのレコードの非同期ロードでは、私たちのほとんどよりもはるかに優れた仕事をします...いずれにせよ、使用するライブラリまたは独自のコードのいずれかが、バックグラウンド スレッドからリソースのロード/ネットワークを実行する必要があります。

また、 ViewHolder パターンをコードに適用する必要があります。ViewHolder を使用することは、常にフード アイデアです。これは、非常に多数のレコードにとって非常に重要になります。ご利用ください。
このように見えるはずです

class ViewHolder {
    textView text1;
    Button button1;
}

class MyAdapter {
    public View getView(int position, View convertView, ViewGroup parent) {
         ViewHolder viewHolder = null;
         if (convertView==null){
              LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
              convertView = inflater.inflate(layoutResourceId, parent, false);
              viewHolder = new ViewHolderItem();
              viewHolder.text1 = (TextView) convertView.findViewById(R.id.text1);
              viewHolder.button1 = (Button) convertView.findViewById(R.id.button1);
              ..........
              convertView.setTag(viewHolder);
         }
         viewHolder = (ViewHolderItem) convertView.getTag();
         ObjectItem objectItem = data[position];
         ..........
    }
}


そして最後に、もっと読み込む機能 と一緒に部分的な読み込みが本当に必要な場合は、http ://www.androidhive.info/2012/03/android-listview-with-load-more-button/ をお読み ください。


于 2014-07-04T16:37:07.803 に答える