画像を前後にスクロールできる Android 用の coverflow アプリに OnItemClickListener を追加しようとしています。追加したい部分はオンクリック リスナーで、画像の 1 つをクリックして別のアクティビティに移動できます。リストビューまたは画像で満たされたグリッドビューに OnItemClick を追加した場合と同じように機能すると思います。この質問が以前に出されたことは理解していますが、今回のケースは異なります。アプリに意味をなさない追加のコードがあります。コードはhttp://www.inter-fuser.com/2010/01/android-coverflow-widget.htmlからのもの で、このアプリには次の 4 つの Java クラスがあります。
CoverFlow.java // CoverAbsSpinner を拡張し、GestureDetector.OnGestureListener を実装します
CoverAdapterView.java // クラスは Adapter クラスと ViewGroup クラスを拡張します
CoverAbsSpinner.java // このクラスは CoverAdapterView.java を拡張します
CoverFlowExample.java // アクティビティを拡張します
奇妙なことは、CoverAdapterView.java クラスで見つけた以下のコードです。役立たずなインターフェースのように見えるものをクラスの真ん中に置いても意味がありません。「この AdapterView の項目がクリックされたときに呼び出されるコールバック メソッド」と表示されます。
これが方法の謎です。これをどのように「呼ぶ」のですか?彼らは実際に OnItemClickListener を準備しましたか? 私はこれをオーバーライドしますか、それとも何ですか?
そして、このコードの理由はまだ理解されていませんか? 誰がこれの目的が何であるか知っていますか? とにかく実装またはオーバーライドする必要があるインターフェイスです。だから私はこれの目的に疑問を呈します。
public interface OnItemClickListener {
/**
* Callback method to be invoked when an item in this AdapterView has
* been clicked.
* <p>
* Implementers can call getItemAtPosition(position) if they need
* to access the data associated with the selected item.
*
* @param parent The AdapterView where the click happened.
* @param view The view within the AdapterView that was clicked (this
* will be a view provided by the adapter)
* @param position The position of the view in the adapter.
* @param id The row id of the item that was clicked.
*/
void onItemClick(CoverAdapterView<?> parent, View view, int position, long id);
}
/**
* Register a callback to be invoked when an item in this AdapterView has
* been clicked.
*
* @param listener The callback that will be invoked.
*/
public void setOnItemClickListener(OnItemClickListener listener) {
mOnItemClickListener = listener;
}
/**
* @return The callback to be invoked with an item in this AdapterView has
* been clicked, or null id no callback has been set.
*/
public final OnItemClickListener getOnItemClickListener() {
return mOnItemClickListener;
}
/**
* Call the OnItemClickListener, if it is defined.
*
* @param view The view within the AdapterView that was clicked.
* @param position The position of the view in the adapter.
* @param id The row id of the item that was clicked.
* @return True if there was an assigned OnItemClickListener that was
* called, false otherwise is returned.