2012-09-14 3 views
0

안드로이드 용 커버 플로우 앱에 OnItemClickListener를 추가하려고합니다. 이미지를 앞뒤로 스크롤 할 수 있고 내가 추가하고자하는 부분이 클릭 리스너 였기 때문에 이미지 중 하나를 클릭하고 다른 활동으로 이동할 수 있습니다. 당신이 OnItemClick을리스트 뷰나 이미지로 채워진 gridview에 추가하는 것과 같은 방식으로 작동한다고 추측합니다. 나는이 질문이 이전에 요청되었지만,이 경우는 다르다는 것을 이해합니다. 앱에 이해가되지 않는 추가 코드가 있습니다.미스터리 알 수없는 외계인 인터페이스를 구현하는 OnItemClickListener

CoverAdapterView.java // 클래스가 확장 어댑터와 뷰 그룹 클래스

GestureDetector.OnGestureListener을

이 CoverAbsSpinner를 확장 및 구현 // CoverFlow.java : 코드 http://www.inter-fuser.com/2010/01/android-coverflow-widget.html에서오고이 응용 프로그램은 다음과 같은 네 개의 자바 클래스를 가지고 그 다음에 할 일이다

CoverAbsSpinner.java는 //이 클래스는

이 CoverFlowExample.java // 활동을

과 확장 CoverAdapterView.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. 

답변

0

안녕하세요.

coverFlow.setOnItemClickListener(new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     switch(position) 
     { 
      case 0: 
       startActivity(new Intent(****.this,@@@@.class)); 
       finish(); 
       break; 
      case 1: 
       startActivity(new Intent(****.this, ####.class)); 
       finish(); 
       break; 
      case 2: 
       startActivity(new Intent(****.this, &&&&.class)); 
       finish(); 
       break; 

     } 
    } 
}); 
+0

이 OnItemClickedListener를 OnCreate 메서드 내에서 사용해야한다는 것을 알고 있습니다. 난 그냥 OnCreate 어디서나 또는 다른 모든 코드를 마지막으로 모든 방법을 아래로 넣어합니까? 종종 사람들은 setContentView 메소드를 따라야한다고 말하고 있지만,이 경우에 맞는지는 확실치 않습니다. – Kevik

+0

예, OnContentVIew와 Android의 모든 위젯을 선언 한 후에 OnCreate 메서드 내에서 OnItemClickedListener를 palse해야합니다. –

+0

나는 setContentView 다음에 올바른 위치에 OnCreate 메서드의 coverFlow.setOnItemClickListener 코드를 넣고 Eclispe IDE에서는 setOnClickListener가 오류로 표시되므로 그 위에 훑어보고 Quickfix에서 제공 한 옵션은 다음과 같습니다 (새 AdapterView. OnItemClickListener()는 Coverflow 유형에 대해 정의 해제 임) 8 개의 빠른 수정 사용 가능 : 'setOnClickListener'(...)로 변경 SetOnItemLongClickListener (..) Create method 'setOnItemClickListener ? – Kevik

관련 문제