問題タブ [getview]

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 投票する
0 に答える
284 参照

android - ArrayAdapter の getView() メソッドは最初の 2 つの項目を繰り返します

リストには 2 種類のビューがあります。

  1. ニュースビュー
  2. 広告ビュー。

アダプタの getCount() メソッドはアイテムの総数を返します。しかし、getview は常に位置を 0 または 1 として返します。私は getViewType() および getViewCount() メソッドを使用しました。また、Holder も使用しました。それでも、それはアイテムを繰り返します。

ここに私のコードがあります:

このコードを使用すると、リスト項目が繰り返されます。でも使ってみると、

正常に動作します。私はこれが正しい方法ではないことを知っています。次に、前の方法を使用したときにコードが機能しないのはなぜですか。どんな助けでも大歓迎です。

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

android - Android の adapter.notifyDataSetChanged() が notifyDataSetChanged() コードを含む関数と並行して実行されるのを停止します。

Android アプリケーション用に次のシングルトンを実行しています

次に、ホームアクティビティから、シングルトンインスタンスを保持します

ホームアクティビティでは、オンラインデータストアに変更があるたびにデータストアオンラインサーバーからトリガーされるリスナーをセットアップします

updateList() を実行する前に、データストアへの更新はアトミックではないため、オンライン データストアのすべての行を取得するのに 2 秒ほどかかるため、しばらく時間がかかります。ここでは app.Fetch を無視します。後で説明します。

updateList() は、listAdapter に入力する必要がある項目の ArrayList をクリアし、adapter.notifyDataSetChanged() を実行します。

私のカスタム listAdapter では、次のように getView を設定しました。

および updateItem(mHolder, this.getItem(position))

基本的に、アプリケーションの起動時に app.Fetch が true に設定され、Home から updateList() がアダプターを作成し、adapter.notifyDataSetChanged() を呼び出します。

この時点で、リスト内のすべてのアイテムに対して listAdapter getView が呼び出され、ハッシュマップのキーとして id をチェックし、それが見つからないため、データストアからデータを取得し、ハッシュマップとビューにデータを挿入します。

ここまでは順調です。リストビューは正しく取り込まれ、ビューがスクロールされると、データはデータストアから何度もフェッチされるのではなく、ハッシュマップから正しく取得されます。

次に、別の電話から、リスナーをトリガーする新しいデータストアを追加します。私の電話では、「RECEIVED」トーストが表示されます。これは、リスナーがトリガーされたことを意味します。app.Fetch が true になり、 updateList() が呼び出されます。

app.Fetch の値を updateList() のどこかで確認すると、まだ true に設定されていますが、getView コードの実行中に確認すると、false に設定されているため、更新されたオンラインをフェッチする代わりに、ハッシュマップからデータを再度取得します。データストア。

getView コードは updateList 関数と並行して実行を開始するため、次の動作を示していると思います。

boolean true updateList() start adapter.notifyDataSetChanged() runs ListAdapter getView start updateList() end boolean false getView は boolean をチェックします。この時点では false であるため、ハッシュマップからデータを取得します。

リストビュー内のすべての項目が getView を介して実行されるまで updateList を待機させる方法はありますか?

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

android - AsyncTask を使用して内部ストレージから画像ファイルをロードする

内部ストレージからサムネイルの形式で画像ファイルをリスト ビューに読み込もうとしています。現在、ViewHolder を使用していますが、スクロール時に読み込みが不安定なため、AsyncTask を使用してみます。ただし、私が見つけたほとんどの例は Web サイトからのダウンロードを扱っているため、AsyncTask を構造化する方法について頭を悩ませることはできません。BaseAdapter でサブクラス化する必要があるのか​​、MainActivity でサブクラス化する必要があるのか​​さえわかりません。下に baseadapter を追加し、未完成の AsyncTask を一番下に追加しました。AsyncTask を使用して ViewHolder を支援するか、画像を A​​syncTask に直接渡してビットマップを返して ListView がスムーズにスクロールするようにするにはどうすればよいですか?

}

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

android - getView() メソッドで定義されたビューの InstanceState を保存する方法

3 つのタブをホストする MainActivity とViewPagerそれぞれのクラス extends がありFragmentます。タブの 1 つに のListViewレイアウトがあり、listView 内の各項目のレイアウトは次のとおりです。

この ListView には、 を拡張するカスタマイズされたアダプター クラスがありますBaseAdapter

私がやりたいことは、ListView のチェックボックスのチェック状態を保存することです。Fragment を拡張するクラスでメソッドをオーバーライドします。問題は、BaseAdapter を拡張するクラスonSaveInstanceStateのメソッドで checkBoxes が定義されていることです。getview()メソッド「onSaveInstanceState」でチェックボックスのチェック状態を保存するにはどうすればよいですか?

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

android - Universal Image Loader - getView() の呼び出しが多すぎる

ListViewUniversal-image-loader を使用してイメージを作成しようとしています。現在、画像は表示されず、読み込まれません。getView()fromImageAdapterが何度も呼び出されていることがわかりました。

たとえば、リスト サイズが 3 の場合、getView()3 回呼び出す必要がありますが、私のコードでは 24 回呼び出します!!!

これは私のソースコードです。

ArrayList<HashMap<String, Object >>feedList には 3 つの項目があります。したがって、getView()3 回呼び出される必要がありますが、24 回呼び出されます。ログはこのようにすべきだと思います、

しかし、私は次のようなログを得ました:

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

android - listViewでチェックされた項目をArrayListに追加するには?

各項目に TextView とチェックボックスが含まれる 12 項目の ListView があります。上下にスクロールしても、各 CheckBox に設定されているチェック ステータスが失われないように、CheckBox のチェック ステータスを永続的に維持することができました。

私が今直面している問題は、ListView の各項目について、対応する CheckBox がチェックされている場合は TextView を ArrayList に追加し、対応する CheckBox がチェックされていない場合は、TextView が含まれている場合は ArrayList から削除する必要があることです。初期化。

以下の getView() メソッドのコードでは、行 "Log.d(TAG, "chosen topic size: " + selectedTopics.size());" 常にゼロを返す??!!

この問題を解決するのを手伝ってください。

getView() :

ArrayList の初期化をコンストラクターに移動した後の LogCat エラー:

com.example.mqtt_designlayout_02.listviewadapter.ListViewAdapter$1.onCheckedChanged(ListViewAdapter.java:95)

0 投票する
2 に答える
414 参照

android - Android カスタム アダプター Listview 1 を選択すると、複数の選択が発生する

トグルボタン、スピナー、その他のビューを備えたカスタムアダプターを備えたリストビューがあります。

このリストビューには、通常 1 つの画面に収まるよりも多くの項目が表示されます。これにより、私には理解できない奇妙な問題が発生します。

例: リストの最初の項目のトグル ボタンを押すと、背景の色が変わります。次に「2番目の画面」(アイテム10〜18)まで下にスクロールすると、背景も変更されたため、11番目のアイテムも「トグル」されていることがわかります。さらに下にスクロールすると、20 番目の項目も選択されています。

私のアダプターは次のようになります。