問題タブ [android-lazyadapter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
46895 参照

android - Android(初心者レベル)のリストビューで画像を遅延ロードしますか?

重複の可能性:
Android - ListView で画像の遅延読み込みを行うにはどうすればよいですか

カスタムアダプターを使用してリストビューに取り組んでいます。画像とテキストビューをロードしたい。画像はインターネットの URL から読み込まれます。ユーザーに表示されるリスト項目の画像を表示したいだけです。romainguyのShelves オープンソース プロジェクトの例を参照しましたが、コードを理解するのは複雑すぎます。初心者レベルの場合、アダプタとアクティビティ間のタグの処理方法を知りたいだけです。コモンズウェアの から、アダプターにタグを設定できますが、リストビューのアイドル状態で対応する画像を表示できません。あなたのアイデアで私を助けてください。サンプルコードはより理解しやすくなっています。

ありがとう。

編集:

ApiDemosでのEfficientSlow Adapterの組み合わせは、理解に役立ちます。

次のような効率的なアダプターの例で行われた変更:

今はうまくいきます。ただし、スクロール状態の場合、画像が適切にリロードされません。項目のいくつかの間隔は images2 を示していません。これは、画像が読み込まれる正しい順序です。ただし、リストのすべての項目ではありません。ソリッドアイテムの間隔にミスマッチが発生。それを修正する方法は?

0 投票する
3 に答える
6510 参照

android - Androidでキャッシュされた画像をクリアする方法は?

Androidでプログラムによってキャッシュされた画像をメモリからクリアするにはどうすればよいですか?

スクロールするListViewと画像がリロードされます。だから、それはを生成し OutofMemoryErrorます。この例外を取得している間、キャッシュをクリアしたい。どうやってするか?何か助けはありますか?

編集:

私は自分のプログラムでこのコードを使用して画像をロードしています:http: //ballardhack.wordpress.com/2010/04/10/loading-images-over-http-on-a-separate-thread-on-android/

0 投票する
1 に答える
4276 参照

android - 動的アダプタ ラッパー Android での notifyDataSetChanged/ListView の問題を修正する方法

概要:カスタム アダプター ラッパーを介して ListView に見出し行を動的に追加しようとしています。ListView で、スクロール位置の同期を維持するのに問題があります。実行可能なデモ プロジェクトが提供されます。

CursorAdapter の値に基づいてリストにアイテムを動的に追加したいと思います。ユーザーが現在表示している位置よりも数個先です。これを行うために、CursorAdapter をラップし、新しいコンテンツのインデックスを SparseArray に保持するアダプターがあります。項目がカスタム アダプターに追加されたときに ListView を更新する必要がありますが、それを機能させようとして多くの落とし穴に遭遇したので、アドバイスをいただければ幸いです。

デモ プロジェクトは、 DynamicSectionedList.zipからダウンロードできます。

デモでは、10 か所先を見て、リスト項目が次の文字に切り替わる正しい位置を見つけることによって、見出しが動的に追加されます。notifyDataSetChanged の各実装には、次のような問題があります。

デモ 1 このデモは、notifyDataSetChanged() の重要性を示しています。何かをクリックすると、アプリがクラッシュします。これは ListView... での健全性チェックによるものですmItemCount != adapter.getItemCount()。道徳的には、データが変更されたことをリストに通知する必要があります。

デモ 2 自然な次のステップは、変更が発生したときに ListView に変更を通知することです。残念ながら、ListView がしっかりとスクロールしているときにこれを行うと、アプリがタッチ モードから切り替わるまで、すべてのタッチ操作が中断されます。これに気付くには、新しい見出しを生成するのに十分な距離まで「フリング スクロール」する必要があります。画面をタップしてもスクロールは停止せず、停止するとリスト項目はクリックできなくなります。これはif (!mDataChanged) { /* do very important stuff */ }、AbsListView.onTouchEvent() の一部のコードが原因です。

デモ 3 これを修正するために、デモ 3 では pendingChanges フラグが導入され、カスタム アダプタは、変更に対して「安全な」状態になったときに ListView から呼び出すことができる notifyDataSetChangedIfNeeded() を取得します。変更を通知する必要がある最初のポイントは ListView.layoutChildren() にあるため、このメソッドをオーバーライドして、必要に応じて最初に変更を通知し、次に呼び出すようにしました。少なくとも 1 つの見出しを通り過ぎてから、リスト項目をクリックします。

理由は完全にはわかりませんが、これは正しく機能しません。キーボード/トラックボールで項目をタップまたは選択すると、古い位置が適切に同期されずにリストが更新されます。受け入れられないリストの一番上までスクロールします。

デモ 4 デモ 3 のスクロールの問題は、少なくともタッチ モードでは克服できます。タッチダウン時に notifyDataSetChangedIfNeeded() への呼び出しを追加することで、すべてのタッチ操作が期待どおりに機能し、リストの位置が適切に同期されるようなときに、データの変更が発生します。

ただし、デバイスがタッチモードでない場合、そのアナログを見つけることができません。もちろん、ハックのように見えることは言うまでもありません。ほとんどの場合、リストは一番上にスクロールして戻りますが、時折正しい位置を維持する原因がわかりません。

Android はあらゆる段階で私と戦っているので、より良いアプローチが必要だと感じています。修正を適用して動作させることができる場合は、デモをお試しください。

これを調べることができる人に感謝します。コードを機能させることができれば、見出し付きのリストに対して同じ最適化を達成しようとしている他の人にとって役立つことを願っています。

0 投票する
1 に答える
9005 参照

android - ビットマップ画像をリストビューの画像ビューに入れる

ListViewのImageViewにビットマップ画像を入れたいです。画像をURLからビットマップ画像に変更しました。10 個の画像があり、ListView の各項目に画像を配置する必要があります。Lazy Adapter以外の方法はありますか?? 前もって感謝します!!!

これは私のコードです

0 投票する
3 に答える
482 参照

android - ListViewでのデータと画像の表示

私はアプリケーションを開発しています。サムネイル画像と対応するデータをListViewの画像で表示しています。データと画像の両方がダウンロードされ、XML解析によって解析されます。画像を表示するためにこのチュートリアルを使用しました。

ListViewでの画像の遅延読み込み

しかし、解析されたデータをListViewに表示する方法がわかりません。

ありがとうございました

アビシェク

0 投票する
1 に答える
888 参照

android - android notifyDataSetChanged()は、リスト内の元のデータを削除します

ユーザーがリストの一番下までスクロールするときに、アダプターにアイテムを追加しようとしています。これは可能ですが、新しいアイテムをアダプターに追加して、すでに存在していたアイテムを保持したいのですが、現在は元のアイテムが削除され、新しいアイテムのみが表示されます。これをどのように達成できるかについてのアイデアはありますか?

これは私のコードがatmのように見えるものです:

私がしていることを明確にするためだけに。リストの一番下が表示されたら、さらにビデオをフェッチするAsyncTaskを開始します。asynctaskで、asynctaskが終了すると発生するイベントのリスナーとしてアダプターを設定しました。これは機能します。

onTaskFinished()上記の最後のメソッド-ここでは、アダプターが各リスト項目に入力するために使用する4つのリストに新しい項目を追加し、最後にアダプターに通知します。

したがって、新しいアイテムはすべて正常に追加されます。問題は、新しいアイテムが追加される前にあったアイテムが、何らかの理由で削除されるか、表示されなくなることです。

リストの長さが長くなることを確認したことを追加するのを忘れました。つまり、元のデータと新しく追加されたデータの両方が含まれています。

何か案は?

[編集]アダプタをリストビューに設定した場所のコードを追加する

0 投票する
1 に答える
443 参照

android - Android : 常に強制終了

このリンクの@fedor投稿に基づいて、リストビューと遅延アダプターを使用してアプリを構築しています

これが私の最初の活動です:

}

そして、これが私の怠惰なアダプタークラスです:

コードを実行した後、ここに logcat があります:

私のプログラムは常に強制終了します...誰かが私を助けることができるかもしれません...

0 投票する
1 に答える
773 参照

android - LazyAdapterのTextViewが間違ったデータを表示する

私はすでにこのリンクに基づいてLazyAdapterでListViewを使用してアプリを構築することに成功しています

しかし、私のリストビューには異常があります。各リストビューには、1つのimageviewと2つのtextviewがあります。したがって、レイジーアダプタはimageviewに「サムネイル」を表示し、Textview1に「name」を表示し、Textview2に「address」を表示します。

ImageViewは正しいです...データベースからの画像サムネイルを表示できます...しかし、ここでの問題は、両方のTEXTVIEWが正しいデータを表示しなかったことです!代わりに、データベースの「名前」と「アドレス」を表示します...サムネイル画像のリンクを表示します。

だから、多分誰でも私を助けることができます。ありがとうb4。

これが私のjsonです:

これが私の主な活動です:

これが私のLaxyAdapterクラスです: