0

我在 SOF 上看到的问题很少,但他们都没有帮助。

在我的应用程序中,我有一个用户列表,可以通过单击用户的朋友来访问。流程是:

  1. 转到我的个人资料

  2. 点击我的朋友去一个有用户列表的活动(我的朋友)

  3. 单击任何 listView Item 进入该用户的个人资料

  4. 从该个人资料中,我可以看到该用户的朋友列表与我的相同。

问题是所有这些 listView 项目都有一个按钮,add as friend该按钮使我和该用户成为该列表中的朋友(例如在 twitter 中关注对以下内容的更改)现在我通过后台返回,并且在该用户之前的列表视图之一中的某个位置为谁的按钮仍然存在add as friend

如何在所有 ListView 中更改该用户的按钮(我的适配器数据中的标志)?

4

1 回答 1

1

用于Interface将事件发送回活动并在收到事件时更新列表或数据库。

接口是将消息传递到“外部世界”的方式。只看一个简单的button onClickListener。您基本上setOnClickListener(this)在按钮上调用 a 并实现onClickListener,这是 a interfacehere。每当单击按钮时,您都会在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 );

    }

}
于 2013-05-11T11:55:02.340 回答