【问题标题】:Is there a cleaner approach to click listeners in Android?在 Android 中是否有更简洁的点击监听器方法?
【发布时间】:2012-05-07 02:56:46
【问题描述】:

所以我已经在 Android 上开发了很长一段时间,而且我本身就是一个 .Net 开发人员。我面临的问题是我的代码看起来很糟糕,而且我真的不喜欢 Java\Android 不确定哪个导致点击事件出现在代码中的方式。在下面的这个例子中,我有一个带有点击事件的列表视图。

list_view.setOnItemClickListener(new OnItemClickListener() {

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
            // TODO Auto-generated method stub

        }
    });

在 .Net 中,我会在我的 Initialize Components 方法中设置我的点击事件,然后在我的主代码页中实现它。我如何告诉 android 在我的代码中使用下面的点击事件方法,而不是在那里引用它。也许是这样的?

list_view.setOnItemClickListener(onItemClick());

稍后在我的代码页中。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

    }
});

总而言之,我只是在寻找一种更简洁的方法来将我的事件连接到我的控件,以便我可以更好地阅读代码。当最初是一名 .Net 开发人员时,迁移到 Java 和 Android 是一项艰巨的任务。

谢谢!

编辑

感谢您在下面的回答我在这里发布了我的工作。

list_view.setOnItemClickListener(list_view_onItemClickListener);


//below in my code
private OnItemClickListener  list_view_onItemClickListener = new OnItemClickListener (){
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub

    }

};

【问题讨论】:

  • 这在 Java 中称为Anonymous Class。随意使用经典的内部类模式来编写和引用您的类实现。

标签: android onitemclicklistener android-event


【解决方案1】:

你可以试试this

【讨论】:

    【解决方案2】:

    你可能喜欢或不喜欢,但我发现最适合我的方法是,例如这是你的layout.xml

    <Button1 android:id="@+id/btn1"  android:onClick="btnHandle">
    
    </Button1>
    
    <Button2 android:id="@+id/btn2 android:onClick="btnHandle">
    
    </Button2>
    

    在你的activity.Java

    public void btnHandle(View v)
    {
      if(v.getId()==R.id.btn1){
    
    
    }else if(v.getId()==R.id.btn2){
    
    }
    

    通过这种方法,您不必实现任何接口,即使您将 Button 视图更改为 ImageView,您也不必在代码中做任何事情。但是对于setOnClickListener,您必须将instance variable 类型从Button 更改为ImageView。 }

    【讨论】:

    • 我以前尝试过这种方法,但从来没有真正满意过。主要是因为我认为每个活动只能实现 1 个按钮单击,但根据您的示例,我绝对可以转向更清洁的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多