1. ホーム
  2. android

[解決済み] AndroidのクラスBaseAdapterのgetItemとgetItemIdのメソッドの意図は何ですか?

2022-04-26 03:06:47

質問

のメソッドの目的について知りたいのですが。 getItem getItemId をAndroid SDKのクラスAdapterに追加しました。

説明からすると getItem は、基礎となるデータを返す必要があります。 つまり、名前の配列がある場合 ["cat","dog","red"] を作成し、アダプタ a を使用すると a.getItem(1) は、"dog" を返すはずですよね? では a.getItemId(1) を返すか?

これらの方法を実際に利用したことがある方は、その例を教えてください。

解決方法は?

これらのメソッドは、リストのデータにアクセスするための、よりクリーンなアプローチだと私は考えています。のような方法で直接アダプタオブジェクトにアクセスするかわりに、 このメソッドを使用します。 myListData.get(position) のようにアダプターを呼び出すだけです。 adapter.get(position) .

も同様です。 getItemId . 通常、リスト内のオブジェクトのユニークIDに基づいて何らかのタスクを実行したい場合に、このメソッドを使用することになります。これは特にデータベースで作業するときに便利です。返された id はデータベース内のオブジェクトへの参照であり、それに対してさまざまな操作(更新/削除/その他)を実行することができます。

つまり、生のデータ・オブジェクトからIDにアクセスする代わりに myListData.get(position).getId() を使用することができます。 adapter.getItemId(position) .

これらのメソッドを使う必要があると感じた一例として、「Scala」を使用したプロジェクトがあります。 SeparatedListViewAdapter . このアダプタは複数の異なる種類のアダプタを含むことができ、それぞれが異なる型 (通常) のデータを表します。を呼び出す際に getItem(position) の上で SeparatedListViewAdapter を送信した場合、送信した位置によって返されるオブジェクトが異なる場合があります。

例えば、リストに2つのセクション(フルーツとキャンディ)があった場合。を使用した場合 getItem(position)position のアイテムにたまたまあった。 フルーツ セクションをリクエストした場合とは異なるオブジェクトを受け取ることになります。 getItem(position)position の項目を指しています。 お菓子 セクションを作成します。 そして、ある種の定数ID値を getItemId(position) どのようなデータであるかを表す getItem(position) を返すか、あるいは instanceof を使って、どのようなオブジェクトを持っているかを判断します。

これまで述べてきたこと以外では、これらのメソッドを本当に使う必要があると感じたことはありません。