2014-04-24 2 views
1

ListView 이미지에 클릭 수신기가있는 사용자 지정 어댑터가 있습니다.어댑터 내부에서 Activity 메서드를 호출 하시겠습니까?

이 코드는 어댑터의 getView 내부 : 목록보기에서

holder.iconImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      //code to do stuff when the image is clicked 
} 

내 이미지 폴더 (폴더를 나타내는)와 실제 이미지의 이미지로 구성되어 있습니다.

사용자가 폴더 이미지를 클릭하면 ActivityA에서 "moveDownFolder"라는 메서드를 호출 할 수 있기를 원합니다.

어댑터 내부에서 수행 할 수 있는지 확실하지 않습니까?

[편집] 기본적으로 ActivityA에서는 사용자 지정 ListView에서 클릭 수신기가 있으므로 사용자 지정 ListView의 텍스트를 클릭하면 폴더 아래쪽으로 이동합니다 (폴더 인 경우).

그러나 ListView에서 이미지을 클릭하면 이미지가 새로운 활동으로 열립니다. 그러나리스트 뷰 (ImageView의 이미지)에있는 폴더 아이콘을 클릭하면 이미지를 열지 않고 폴더 아래로 코드를 이동 시키길 원합니다.

답변

6

나는 인터페이스를 리스너로 사용할 것을 권장합니다. 예를 들어

:

1, 사용자 인터페이스를 만들 : 당신이 자동으로 할 것,

public class ActivityA extends Activity implements MyListener 

3 :

public interface MyListener { 

void folderClicked(); 
} 

2, 당신의 ActivityA이 같은이 인터페이스를 구현하자 메서드 폴더를 클릭하면 다음과 같이 보입니다 :

@Override 
protected void folderClicked() { 
    // Do your stuff here. 

} 

4, 다음과 같이 생성자와 어댑터에 활동 리스너를 보내

MyAdpater adapter = new MyAdpater(ActivityA.this); 

5, 어댑터 클래스의 코드는 다음과 같이해야한다 :

예 그것을 할 수
public class TimeLineAdapter extends BaseAdapter { 

private MyListener mListener; 


public TimeLineAdapter(MyListener listener) { 
    super(); 

    mListener = listener; 


} 

holder.iconImage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     mListener.onFolderClicked() 
     //code to do stuff when the image is clicked 
} 
+0

덕분에 내가 이것을 시도 할 것이다. 사용자가 폴더 이미지 (folder.png라고하는 드로어 블)를 클릭했는지 알 수있는 쉬운 방법이 있습니까? 그래서 그들이 폴더를 클릭하면 moveownfolder를 호출 할 수 있습니까? – user3437721

+0

예, 어댑터에있는 객체를 사용하고 있습니까? 클릭 한 위치를 가져온 다음 폴더 세부 정보로 항목 위치를 가져올 수 있습니다. – SacreDeveloper

+0

예, 나는 클릭 한 위치를 가지고 있지만 클릭 한 폴더인지 알고 싶습니다. 특히, 해당 위치에있는 이미지가 drawable인지 확인하는 방법이 있습니까? – user3437721

1

, 당신의 기능을 다음과 같이하십시오 : static public moveDownFolder(). 활동이 생성되었는지 확인해야합니다. 어댑터에서 해당 함수를 호출하는 단지 수행 어댑터가 ActivityA의 내부 클래스입니다 YourActivity.moveDownFolder()

1

경우, 시도 :

ActivityA.this.moveDownFolder(); 
+1

알겠습니다. ActivityA는 둘러싼 클래스가 아닙니다. – user3437721

관련 문제