2013-05-11 1 views
0

에서 한 활동의 ​​ListView에있는 데이터를 변경,하지만 그들 중 어느 것도 도움이되었다. 내 응용 프로그램에서는 어떻게 SOF에 대한 몇 가지 질문을 본 다른 활동

나는 사용자의 친구를 클릭하여 액세스 할 수있는 사용자의 목록이있다. 흐름은 다음과 같습니다 내 친구에

  1. 이동 내 프로필

  2. 를 클릭하여 사용자 목록 (내 친구)의 어떤에

  3. 클릭이있는 활동에 가고 목록보기 항목은 내가 해당 사용자의 친구가 광산과 같은 방법으로 목록을 볼 수있는 프로필에서 해당 사용자의 프로필

  4. 에 걸립니다.

저와 그 목록에 친구로 해당 사용자가 지금은 가기 backstack를 통해 돌아올 (같은 트위터에 다음과 같은 변경에 따라)하게 모든 목록보기 항목이 add as friend에 단추가하는 문제, 그리고 버튼이 여전히있는 사용자가있는 이전 listView 중 하나의 어딘가 add as friend.

어떻게 모든의 ListView에서 해당 사용자의 버튼 (내 어댑터 데이터 플래그)을 변경하려면?

+0

시도가 정의하는 귀하의 Items 정적 글로벌 및 귀하의 목록보기. 또는 번들 및 putextras 사용 –

+0

Backstack에서 5 단계 떨어져있는 활동으로 데이터를 되돌릴 수 없습니다. 사실 나는 어떤 ListView가 바뀔지조차 모른다. 또한 전역 변수를 사용할 수 없다면 List – user1537779

+0

이있는 활동의 인스턴스가 여러 개 있기 때문에 작동하지 않을 수 있습니다. 사용하기에 적합하지 않지만 해당 활동에서 이벤트를 onresume하면 DB 또는 원하는 곳에서 목록을 다시 만들 수 있습니다. –

답변

1

사용 Interface 다시 활동에 이벤트를 보내고 이벤트가 수신 될 때 목록 또는 데이터베이스를 업데이트합니다.

인터페이스는 "외부 세계"에 메시지를 전달하는 방법입니다. 간단한 button onClickListener을 살펴보십시오. 기본적으로 버튼의 setOnClickListener(this)을 호출하고 인 onClickListener을 구현합니다. 버튼을 클릭 할 때마다 onClick에 이벤트가 발생합니다. 그것은 여기에 (... 나를에 따라 엄청난 고통이있는) 의도의 필요없이 활동간에 메시지를 전달하는 가장 안전한 방법입니다 예입니다

예 :

class A extends Activity implements EventInterface{ 

    public A(){ 

     //set a listener. (Do not forget it!!!) 
     //You can call it wherever you want; 
     //just make sure that it is called before you need something out of it. 
     //safest place is onCreate. 
     setEventInterfaceListener(A.this); 

    }  

    //this method will be automatically added once you implement EventInterface. 
    void eventFromClassB(int event){ 

     //you receive events here. 
     //Check the "event" variable to see which event it is. 

    }   

} 


class B{ 

    //Interface logic 
    public interface EventInterface{ 
     public static int BUTTON_CLICKED = 1; 

     void eventFromClassB(int event); 
    } 
    static EventInterface events; 

    public static void setEventInterfaceListener(EventInterface listener) { 
     events = listener; 
    } 

    private void dispatchEvent(int trigger) { 
     if (events != null) { 
      events.eventFromClassB(trigger); 
     } 
    } 

    //Interface ends 

    void yourMethod(){ 

     //Call this whenever you want to send an event. 
     dispatchEvent(BUTTON_CLICKED); 

    } 

} 
+0

추천 코드에 대한 코드 또는 링크를 제공해주십시오. – user1537779

+0

예! 내 게시물을 수정했습니다. –

관련 문제